Cod sursa(job #395313)

Utilizator lucian666Vasilut Lucian lucian666 Data 12 februarie 2010 19:43:00
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 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; 
}