Pagini recente » Cod sursa (job #1609306) | Cod sursa (job #1754785) | Cod sursa (job #1335530) | Cod sursa (job #1680310) | Cod sursa (job #1147938)
#include<stdio.h>
#include<algorithm>
#include<math.h>
#define maxn 500010
using namespace std;
FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
int v[maxn],n,m,x,y,cod;
void opinit(int ind,int val){
int poz=0;
while(ind<=n){
v[ind]=val;
while(1<<poz==0)
poz++;
ind+=1<<poz;
poz++;
}
}
void op0(int ind,int val){
int poz=0;
while(ind<=n){
v[ind]+=val;
//poz += (poz & -poz);
ind +=(ind & -ind);
// while(1<<poz==0)
// poz++;
// ind+=1<<poz;
// poz++;
}
}
int op1(int st,int dr){
int s1=0,poz=0,s2=0;
st--;
while(st>0){
s1+=v[st];
st-=(st & -st);
// while(1<<poz==0)
// poz++;
// st-=1<<poz;
// poz++;
}
poz=0;
while(dr>0){
s2+=v[dr];
dr-=(dr & -dr);
//while(1>>poz==0)
// poz++;
//dr-=1<<poz;
// poz++;
}
return s2-s1;
}
int main (){
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=n;i++){
fscanf(f,"%d",&x);
op0(i,x);
}
// for(int i=1;i<=n;i++)
// fprintf(g,"%d ",v[i]);
for(int i=1;i<=m;i++){
fscanf(f,"%d%d%d",&cod,&x,&y);
if(cod==0){
op0(x,-y);
}
else
fprintf(g,"%d\n",op1(x,y));
}
return 0;
}