Pagini recente » Cod sursa (job #1599141) | Cod sursa (job #2675383) | Cod sursa (job #182504) | Cod sursa (job #991654) | Cod sursa (job #3246942)
#include <fstream>
#include <vector>
#define int long long
using namespace std;
vector <int> bit;
int n,q;
void update1(int i,int x){
while(i<=n){
bit[i]+=x;
i=i+(i&-i);
}
}
void update2(int i,int x){
while(i<=n){
bit[i]-=x;
i=i+(i&-i);
}
}
int sumx(int poz){
int sum=0;
while(poz>0){
sum=sum+bit[poz];
poz=poz-(poz&-poz);
}
return sum;
}
int rangesquery(int lr,int rl){
return sumx(rl)-sumx(lr-1);
}
signed main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
cin>>n>>q;
bit.assign(n+1,0);
for (int i =1; i <=n; i++) {
int val;
cin>>val;
update1(i,val);
}
for (int i = 1; i <=q; i++) {
int c,a,b;
cin>>c>>a>>b;
if(c==0){
update2(a,b);
}else{
cout<<rangesquery(a,b)<<endl;
}
}
return 0;
}