四、阅读程序-3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #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 = 0; 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; } |