input:
5 1
2147483647 2147483647 2147483647 2147483647 2147483647
2 1 5
out:
10737418235
我的代码out:
2147483643
代码:
#include <iostream>
#include <vector>
using namespace std;
int lowbit(int x){
return x&-x;
}
void add(int idx,long long num,int n,vector<long long> &t){
for (int i=idx;i<=n;i+=lowbit(i)){
t[i]+=num;
}
}
int query(int idx,vector<long long> &t){
long long ans=0;
for (int i=idx;i>0;i-=lowbit(i)){
ans+=t[i];
}
return ans;
}
int main(){
int n,m;
cin >> n >> m;
vector<long long> t(n+1,0);
for (int i=1;i<=n;++i){
long long a;
scanf("%lld",&a);
add(i,a,n,t);
}
for (int i=0;i<m;++i){
int op,x,y;
scanf("%d%d%d",&op,&x,&y);
if (op==1){
add(x,y,n,t);
}else{
printf("%lld\n",query(y,t)-query(x-1,t));
}
}
return 0;
}