Pagini recente » Cod sursa (job #1001508) | Cod sursa (job #1503729) | Cod sursa (job #2070043) | Cod sursa (job #2488210) | Cod sursa (job #1793338)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
typedef unsigned int uint;
int n,m;
vector<int> arbore;
int x,y,caz;
inline uint getParent(uint queriedNode){
uint aux=~queriedNode+1;
aux=queriedNode&aux;
return queriedNode-aux;
}
inline uint getNext(uint queriedNode){
uint aux=~queriedNode+1;
aux=queriedNode&aux;
return queriedNode+aux;
}
void update(int poz, int val, bool minus){
while(poz<=n){
if(minus)arbore[poz]-=val;
else arbore[poz]+=val;
poz=getNext(poz);
}
}
int query(int poz){
int sum=0;
while(poz>0){
sum+=arbore[poz];
poz=getParent(poz);
}
return sum;
}
int main()
{
fin>>n>>m;
arbore.resize(n+1);
for(int i=1;i<=n;i+=1){fin>>x;update(i,x,0);}
for(;m;m-=1){
fin>>caz>>x>>y;
if(caz==0)update(x,y,1);
else fout<<query(y)-query(x-1)<<'\n';
}
fin.close();
fout.close();
return 0;
}