Cod sursa(job #115507)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 16 decembrie 2007 12:52:13
Problema Operatii Scor 60
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasa a 9-a Marime 0.63 kb
#include<stdio.h>
long int n,x[100002],sol,i;
void solve(long int p1,long int p2);
int main()
{
	FILE *f,*g;f=fopen("operatii.in","r");g=fopen("operatii.out","w");
	fscanf(f,"%ld",&n);
	for(i=1;i<=n;i++)fscanf(f,"%ld",&x[i]);
	solve(1,n);
	fprintf(g,"%ld\n",sol);
	fcloseall();
	return 0;
}
void solve(long int p1,long int p2)
{       long int min=100001,ii,pp1,pp2;
	for(ii=p1;ii<=p2;ii++)
	{ if(x[ii]<min)min=x[ii];
	  if(!min)break;
	}
	if(min){sol=sol+min;for(ii=p1;ii<=p2;ii++)x[ii]-=min;}
	pp1=p1;
	while(pp1<=p2)
	{  if(!x[pp1])pp1++;
	   else { pp2=pp1;while(x[pp2])pp2++;pp2--;solve(pp1,pp2);pp1=pp2+1;}
	}
}