Cod sursa(job #395264)

Utilizator deiosxHalalai Tudor Andrei deiosx Data 12 februarie 2010 17:40:09
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h>
#define MAX 15000
typedef long long int64; 
typedef unsigned pint; 
void deschide()
{
freopen("datorii.in","rt",stdin);
freopen("datorii.out","wt",stdout);
}
int a[MAX+1],n,m;


void add(int,int);


void citeste(void) {
int val,i;
scanf("%d %d",&n,&m);
for(i=1;i<=n;++i) {
scanf("%d",&val);
add(i,val);
}
}


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);
if(k) printf("%d\n",sum(v)-sum(ind-1));

else add(ind,-v);
}
fclose(stdin);
fclose(stdout);
}


int main(void) {
deschide();
citeste();
solve();
return 0;
}