离奇事件
评测结果:
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=200005;
int n,q,x[N];
long long p[N],sum[N];
int solve1(int tar){
int l=1,r=n;
while(l<r){
int mid=(l+r)>>1;
if(x[mid]>=tar) r=mid;
else l=mid+1;
}
return l;
}
int solve2(int tar){
int l=1,r=n;
while(l<r){
int mid=(l+r+1)>>1;
if(x[mid]<=tar) l=mid;
else r=mid-1;
}
return r;
}
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%d",&x[i]);
for(int i=1;i<=n;i++) scanf("%lld",&p[i]);
for(int i=1;i<=n;i++) sum[i]=sum[i-1]+p[i];
scanf("%d",&q);
while(q--){
int l,r;
scanf("%d%d",&l,&r);
int p=solve1(l),q=solve2(r);
printf("%lld\n",sum[q]-sum[p-1]);
}
return 0;
}