Pagini recente » Cod sursa (job #1829360) | Cod sursa (job #1386020) | Cod sursa (job #1002750) | Cod sursa (job #56351) | Cod sursa (job #115507)
Cod sursa(job #115507)
#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;}
}
}