Cod sursa(job #584700)

Utilizator lily3Moldovan Liliana lily3 Data 26 aprilie 2011 13:47:04
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
using namespace std;

int i,j,n,m,q,p,x,c[15001],nr0,s1,s2,a[15001];
int main()
{
	FILE *f=fopen("datorii.in","r");
	FILE *g=fopen("datorii.out","w");
	fscanf(f,"%d%d",&n,&m);
	c[0]=0;
	for(i=1;i<=n;i++)
	{
		fscanf(f,"%d",&a[i]);
		a[i]+=a[i-1];
		c[i]=a[i]-a[(i-(i&(-i)))];
	}
	while(m--)
	{
		fscanf(f,"%d%d%d",&x,&q,&p);
		if(x==0)
		{
			while(q<=n)
			{
				c[q]-=p;
				q+=(q&(-q));
			}
		}
		else
		if(x==1)
		{
			s1=s2=0;
			nr0=0;
			while(p>0)
			{
				s1+=c[p];
				p-=(p&(-p));
			}
			q-=1;
			while(q>0)
			{
				s2+=c[q];
				q-=(q&(-q));
			}
			fprintf(g,"%d\n",s1-s2);
		}
	}
	return 0;
}