Cod sursa(job #420983)

Utilizator drywaterLazar Vlad drywater Data 20 martie 2010 21:25:28
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>
long long s[15001],i,p,q,t,n,m,j,k;
FILE *f=fopen("datorii.in","r"),*g=fopen("datorii.out","w");
int main(void)
{
	fscanf(f,"%lld%lld",&n,&m);
	for (i=1;i<=n;i++)
	{
		fscanf(f,"%lld",&p);
		for (j=i;j<=n;j=j+(j^(j-1)&j))
			s[j]+=p;
	}
	for (i=1;i<=m;i++)
	{
		fscanf(f,"%lld%lld%lld",&t,&p,&q);
		if (t==1)
		{
			k=0;
			for (j=q;j>0;j=j-(j^(j-1)&j))
				k=k+s[j];
			for (j=p-1;j>0;j=j-(j^(j-1)&j))
				k=k-s[j];
			fprintf(g,"%d\n",k);
		}
		else
		{
			for (j=p;j<=n;j=j+(j^(j-1)&j))
				s[j]-=q;
		}
	}
	fclose(g);
	return 0;
}