Pagini recente » Cod sursa (job #1155075) | Cod sursa (job #929983) | Cod sursa (job #1705279) | Cod sursa (job #1089334) | Cod sursa (job #3246939)
#include <fstream>
#include <vector>
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 ranges(int lr,int rl){
return sumx(rl)-sumx(lr-1);
}
int 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<<ranges(a,b)<<endl;
}
}
return 0;
}