Cod sursa(job #115033)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 16 decembrie 2007 10:22:30
Problema Operatii Scor 30
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasa a 9-a Marime 0.67 kb
//operatii
#include<stdio.h>
FILE * fin=fopen("operatii.in","r");
FILE * fout=fopen("operatii.out","w");
int s[10000];
int rez(long st,long sf);
int rez(long st,long sf)
{
int rezf=0,i,min,j,k;
for(i=st;i<=sf;i++)
   if(s[i]!=0){
      j=i;
      min=s[j];
      while(s[j+1]!=0&&j<=sf){
	j++;
	if(s[j]<min) min=s[j];
		      }
      int start=i;
      int stop=j;
      for(k=i;k<=j;k++) s[k]=s[k]-min;
      rezf+=(rez(start,stop)+min);
      i=j+1;
	      }
   return rezf;
}

int main()
{
int n,i;
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++)
   fscanf(fin,"%d",&s[i]);
fclose(fin);
int nr=rez(1,n);
fprintf(fout,"%d",nr);
fclose(fout);return 0;}