Cod sursa(job #407215)

Utilizator Cristi09Cristi Cristi09 Data 2 martie 2010 10:07:11
Problema Operatii Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
#define NMAX 1000002
long a[NMAX],v[NMAX],n,nr,sum,st=-1,dr;
void read()
{
	FILE*f=fopen("operatii.in","r");
	fscanf(f,"%d",&n);
	long i,o=1;
	for(i=0;i<n;++i)
	{
		fscanf(f,"%d",&a[i]);
		if(a[i])
		{
			if(o){++nr;o=0;}
			a[i]-=1;
			v[i]=1;
			if(a[i])
			{
				if(st==-1)st=i;
				dr=i;
			}
		}
		else o=1;
		sum+=a[i];
	}
	fclose(f);
}
int main()
{
	read();
	long i,o=1,dr1;
	while(sum)
	for(i=st,o=1,st=-1,dr1=dr;i<=dr1;++i)
	{
		if(a[i])
		{
			if(o){++nr;o=0;}
			--a[i];
			++v[i];
			--sum;
			if(a[i])
			{
				if(st==-1)st=i;
				dr=i;
			}
		}
		else o=1;
	}
	FILE*g=fopen("operatii.out","w");
	fprintf(g,"%d",nr);
	fclose(g);
	return 0;
}