#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N=3e5+10;
int a[N],s[N];
vector<int> alls;
vector<pair<int,int>>add,query;
int n,m;
int find(int x){
int l=0,r=alls.size();
while(alls[l+1]!=alls[r]){
int mid=l+r>>1;
if(alls[mid]>=x) r=mid;
else l=mid;
}
return r;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int x,c;
scanf("%d%d",&x,&c);
add.push_back({x,c});
alls.push_back(x);
}
for(int i=1;i<=m;i++){
int l,r;
scanf("%d%d",&l,&r);
query.push_back({l,r});
alls.push_back(l);
alls.push_back(r);
}
sort(alls.begin(),alls.end());
alls.erase(unique(alls.begin(),alls.end()),alls.end());
for(auto item:add){
int x=find(item.first);
a[x]+=item.second;
}
for(int i=1;i<=alls.size();i++) s[i]=s[i-1]+a[i];
for(auto item:query){
int l=find(item.first);
int r=find(item.second);
printf("%d\n",s[r]-s[l-1]);
}
return 0;
}
想问问我的代码出错在哪里
在执行这段数据
3 3
1 2
3 6
7 5
1 1
4 6
7 8
的时候出现问题
但执行
3 3
1 2
3 6
7 5
1 2
4 6
7 8
时候却是正确的,经过检查之后发现是find函数返回的a数据索引出现问题
但add中的值并没有变化呀