#include #define N 200005 #define int long long using namespace std; mapmp; int n,m; int a[N],x[N],q[N]; int p[N],r[N],d[N]; int li[N],cnt; int ans[N]; priority_queue, greater >qs; bool cmp(int xx,int yy) { return x[xx]>n; for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); } for(int i=1;i<=n;i++) { scanf("%lld",&x[i]); } cin>>m; for(int i=1;i<=m;i++)scanf("%lld",&p[i]); for(int i=1;i<=m;i++) { scanf("%lld",&r[i]); if(mp.find(p[i]-r[i])==mp.end()) { mp[p[i]-r[i]]=i; } else { mp[p[i]-r[i]]=-1; } } for(int i=1;i<=max(n,m);i++)q[i]=d[i]=i; sort(q+1,q+n+1,cmp); sort(d+1,d+m+1,cmp2); // cout<mx) { id=d[q2]; mx=p[d[q2]]+r[d[q2]]; } q2++; } else { tmp=x[q[q1]]-1;solve(tmp); if(!qs.size()) { if(mp[x[q[q1]]]==0) { as+=a[q[q1]]; } else if(mp[x[q[q1]]]!=-1) { ans[mp[x[q[q1]]]]+=a[q[q1]]; } } else { int sz=qs.size(); if(sz==1&&mp[x[q[q1]]]==0) { ans[id]+=a[q[q1]]; } } q1++; } // cout<