Pagini recente » Cod sursa (job #1098425) | Cod sursa (job #3158145) | Cod sursa (job #2333147) | Cod sursa (job #2809612) | Cod sursa (job #1147952)
#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;
int putere(int x){
return x&-x;
}
void op0(int ind, int val){
int poz=0;
while(ind<=n){
arbore[ind]+=val;
ind+=putere(ind);
}
}
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-=putere(a);
// ++poz;
}
//sb:
poz=0;
while(b>0){
sb+=arbore[b];
// while((b && 1<<poz)==0)
// ++poz;
b-=putere(b);
// ++poz;
}
g<<sb-sa_1<<"\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);
}
}
//f>>n;
//while(n>0){
// g<<putere(n)<<" ";
// n-=putere(n);
// }
return 0;
}