Cod sursa(job #290718)

Utilizator bog29Antohi Bogdan bog29 Data 28 martie 2009 16:16:24
Problema Operatii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream.h>
ifstream in("operatii.in");
ofstream out("operatii.out");
int n,v[1000000];
long long k;
int ok()
{	int i,p=0;
	for(i=1;i<=n;i++)
		if(v[i]!=0)p=1;
	return p;
}	
void scade(int p1,int p2)
{	int i;
	for(i=p1;i<=p2;i++)
		v[i]--;
	k++;
}	
void cauta()
{	int i,j,p1,p2;
	for(i=1;i<n;i++)
	{	if((i==1)&&(v[i]!=0))
		{	p1=1;
			for(j=p1;j<n;j++)
			{	if((v[j]!=0)&&(v[j+1]==0))
				{	p2=j;
					scade(p1,p2);
					return;
				}	
				if((v[j+1]!=0)&&(j+1==n))
				{	p2=j+1;
					scade(p1,p2);
					return;
				}	
			}	
		}	
		if((i==n-1)&&(v[i+1]!=0))
		{	scade(n,n);
			return;
		}	
		if((v[i]==0)&&(v[i+1]!=0))
		{	p1=i+1;
			for(j=p1;j<n;j++)
			{	if((v[j]!=0)&&(v[j+1]==0))
				{	p2=j;
					scade(p1,p2);
					return;
				}	
				if((v[j+1]!=0)&&(j+1==n))
				{	p2=j+1;
					scade(p1,p2);
					return;
				}	
			}	
		}
	}
}	
int main()
{	int i,j;
	in>>n;
	for(i=1;i<=n;i++)
		in>>v[i];
	in.close();
	while(ok()==1)
		cauta();
	out<<k<<"\n";
	out.close();
	return 0;
}