Pagini recente » Cod sursa (job #1336846) | Cod sursa (job #2130974) | Cod sursa (job #2715027) | Cod sursa (job #1252272) | Cod sursa (job #1020)
Cod sursa(job #1020)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ERR(d) fprintf(stderr,"%d",d)
#define Err(f,d) fprintf(stderr,f,d)
#define For(i,a,n) for(int i=(a);i<=(n);++i)
#define ABS(x) ((x)<0?-(x):(x))
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define FOR(i,n) for(int i=0;i<(n);++i)
#define ROF(i,n) for(int i=(n);i>=0;--i)
#define MAX 15000
typedef long long int64;
typedef unsigned pint;
int a[MAX+1],n,m;
void add(int,int);
void read_data(void) {
int val,i;
freopen("datorii.in","rt",stdin);
freopen("datorii.out","wt",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;++i) {
scanf("%d",&val);
add(i,val);
}
//for(i=1;i<=n;++i)
//Err("%lld ",a[i]);
}
int sum(int st) {
int s1=0;
while(st) {
s1+=a[st];
st-=st^(st-1)&st;
}
return s1;
}
void add(int ind,int val) {
while(ind<=n) {
a[ind]+=val;
ind+=ind^(ind-1)&ind;
}
}
void solve(void) {
int k,ind,v;
for(long i=0;i<m;++i)
{
scanf("%d %d %d\n",&k,&ind,&v); //ind = indicele zilei sau ind prim elem
if(k) printf("%d\n",sum(v)-sum(ind-1));
else add(ind,-v);
}
fclose(stdin);
fclose(stdout);
}
int main(void) {
read_data();
solve();
return 0;
}