Pagini recente » Cod sursa (job #320218) | Cod sursa (job #584550) | Cod sursa (job #2147223) | Cod sursa (job #1932046) | Cod sursa (job #2321056)
#include <iostream>
#include <fstream>
using namespace std;
const int Maxx=15002;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,querry;
int i,type,a,b,x;
int aib[Maxx];
void update(int poz,int val);
int gb(int n);
int query(int a,int b);
int sum(int poz);
void build(int poz,int val);
int main() {
fin>>n>>querry;
for (i=1;i<=n;++i){
fin>>x;
build(i,x);
}
for (;querry;--querry){
fin>>type>>a>>b;
if (type==0) update(a,b);
else fout<<query(a,b)<<"\n";
}
return 0;
}
void update(int poz,int val){
int i;
for (i=poz;i<=n;i+=gb(i)){
aib[i]-=val;
}
}
void build(int poz,int val){
int i;
for (i=poz;i<=n;i+=gb(i)){
aib[i]+=val;
}
}
int gb(int n){
return (n & (n^(n-1)));
}
int query(int a,int b){
return sum(b)-sum(a-1);
}
int sum(int poz){
int i,sm=0;
for (i=poz;i>0;i-=gb(i)){
sm+=aib[i];
}
return sm;
}