Cod sursa(job #717670)

Utilizator bluestuffPetrean Miream bluestuff Data 20 martie 2012 09:51:45
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>
int n,m,A[15001],s,Z[15001];
FILE *g=fopen("datorii.out","w");

int main(void)
{
	FILE *f=fopen("datorii.in","r");
	fscanf(f,"%d%d",&n,&m);
	int i,a,b,c,j,nn,nz;
	nn=0;
	nz=0;
	int k;
	for(i=1;i<=n;i++)
	{
		fscanf(f,"%d",&a);
		if(a==0)
			nz++;
		else
		{
			nn++;
			A[nn]=a;
			Z[nn]=Z[nn-1]+nz;
			nz=0;
		}
		s+=a;
	}
	for(i=1;i<=m;i++)
	{
		fscanf(f,"%d%d%d",&a,&b,&c);
		if(a==0)
		{
			A[b-Z[b]]-=c;
			s-=c;
		}
		else
		{
			k=0;
			b=b-Z[b];
			c=c-Z[c];
			if(b+1-c<b-1+n-c)
				for(;b<=c;b++)
					k+=A[b];
			else
			{
				for(j=1;j<b;j++)
					k+=A[j];
				for(j=c+1;j<=nn;j++)
					k+=A[j];
				k=s-k;
			}
			fprintf(g,"%d\n",k);
		}
	}
	fclose(g);
	return 0;
}