Cod sursa(job #59421)

Utilizator andrei.12Andrei Parvu andrei.12 Data 9 mai 2007 08:53:04
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
int c[16000];
int main()
{
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	int i, n, m, poz, p, q, nr, s1, s2, val;
	scanf("%d%d",&n,&m);
	for (i=1;i<=n;i++){
		scanf("%d",&val);
		poz=i;
		while (poz<=n){
			c[poz]+=val;
			poz+=(poz^(poz-1))&poz;
		}
	}
	for (i=1;i<=m;i++){
		scanf("%d%d%d",&nr,&p,&q);
		if (nr==0)
			while (p<=n){
				c[p]-=q;
				p+=(p^(p-1))&p;
			}		
		else{
			s1=0;
			while (q){
				s1+=c[q];
				q-=(q^(q-1))&q;
			}
			s2=0;
			p--;
			while (p){
				s2+=c[p];
				p-=(p^(p-1))&p;
			}
			printf("%d\n",s1-s2);
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}