Cod sursa(job #60196)

Utilizator swift90Ionut Bogdanescu swift90 Data 12 mai 2007 22:09:37
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
int s[15010],sum[15010];
int main(){
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	int n,m,i,i1,aux,t,v,suma;
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++){
		scanf("%d",&aux);
		sum[i]=sum[i-1]+aux;
		i1=(i^(i-1))&i;
		s[i]=sum[i]-sum[i-i1];
	}
	
	for(i=0;i<m;i++){
		scanf("%d %d %d",&aux,&t,&v);
		if(aux==0){
			i1=t;
			while(i1<=n){
				s[i1]-=v;
				i1+=(i1^(i1-1))&i1;
			}
		}
		else{
			i1=v;
			suma=0;
			while(i1){
				suma+=s[i1];
				i1-=(i1^(i1-1))&i1;
			}
			i1=t-1;
			while(i1){
				suma-=s[i1];
				i1-=(i1^(i1-1))&i1;
			}
			printf("%d\n",suma);
		}
		
	}
	
	return 0;
}