#include <iostream>using namespace std;const int maxn = 10000;int n;int a[maxn];int b[maxn];int f(int l, int r, int depth) { if (l > r) return 0; int min = maxn, mink; for (int i = l; i <= r; ++i) { if (min > a[i]) { min = a[i]; mink = i; } } int lres = f(l, mink - 1, depth + 1); int rres = f(mink + 1, r, depth + 1); return lres + rres + depth * b[mink];}int main() { cin >> n; for (int i = 0; i < n; ++i) cin >> a[i]; for (int i = 0; i < n; ++i) cin >> b[i]; cout << f(0, n - 1, 1) << endl; return 0;}如果 数组有重复的数字,则程序运行时会发生错误。()
如果 数组全为 ,则输出为 。()
当 时,最坏情况下,与第 行的比较运算执行的次数最接近的是:()。
当 时,最好情况下,与第 行的比较运算执行的次数最接近的是:()。
当 时,若 数组满足,对任意 ,都有 b[i] = i + 1,那么输出最大为()。
(4分)当 时,若 数组满足,对任意 ,都有 b[i]=1,那么输出最小为()。