Cod sursa(job #40723)

Utilizator crusRus Cristian crus Data 27 martie 2007 17:57:11
Problema Oo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#define input "oo.in"
#define output "oo.out"
#define nmax 200002
long min,i,pz,cnt,n,a[nmax],max[nmax];
inline long maxim(long a, long b)
{
	if (a>b) return a;
	return b;
}
int main()
{
	FILE *fin,*fout;
	fin=fopen(input,"r");
	fout=fopen(output,"w");
	fscanf(fin,"%ld",&n);	
	min=101;
	for (i=1;i<=n;i++)
		{
		 fscanf(fin,"%ld",&a[i]);
		 if (a[i]<min) {pz=i+1;min=a[i];}
		 a[n+i]=a[i];		 
		}		
	max[pz]=a[pz];
	cnt=max[pz];
	for (i=pz+1;i<pz+n-1;i++)
		{
		 max[i]=a[i]+maxim(a[i-1]+max[i-3],max[i-2]);
		 if (cnt<max[i]) cnt=max[i];
		}
	fprintf(fout,"%ld",cnt);
	fclose(fin);
	fclose(fout);
	return 0;
}