Pagini recente » Cod sursa (job #446489) | Cod sursa (job #3031421) | Cod sursa (job #2337882) | Cod sursa (job #552170) | Cod sursa (job #1147853)
#include<fstream>
#define maxn 50001
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
long long int arbore[maxn];
long long int n,m,op,x,op11,op2,sa_1,sb;
void op0(int ind, int val){
int poz=0;
while(ind<=n){
arbore[ind]+=val;
while((ind && 1<<poz)==0)
++poz;
ind+=1<<poz;
++poz;
}
}
void op1(int a,int b){
int poz;
sa_1=0; // sa_1= suma<1,a-1>
sb=0; //sb=suma<1,b> // suma va fi data de sb-sa_1
//sa_1:
a=a-1;
poz=0;
while(a>0){
sa_1+=arbore[a];
while( (a && 1<<poz)==0)
++poz;
a-=1<<poz;
++poz;
}
//sb:
poz=0;
while(b>0){
sb+=arbore[b];
while((b && 1<<poz)==0)
++poz;
b-=1<<poz;
++poz;
}
g<<sb-sa_1-3<<"\n";
}
int main(){
f>>n>>m;
for(int i=1;i<=n;++i){
f>>x;
op0(i,x);
}
// for(int i=1;i<=n;++i)
// g<<arbore[i]<<" ";
for(int i=1;i<=m;++i){
f>>op>>op11>>op2;
if(op==0){
op2=-op2;
op0(op11,op2);
}
else{
op1(op11,op2);
}
}
return 0;
}