Cod sursa(job #132174)

Utilizator razvi9Jurca Razvan razvi9 Data 5 februarie 2008 11:53:42
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>
int a[100001],b[100001],n,i,max,m;
int maxim(int a,int b){if(a<b) return b; return a;}
int main()
{
	freopen("oo.in","r",stdin);
	freopen("oo.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++) scanf("%d",&a[i]);
	if(n==2) max=a[1]+a[2];
	else{
		b[3]=a[2]+a[3];
		m=0;
		for(i=4;i<=n;i++){
			m=maxim(m,b[i-3]);
			b[i]=a[i]+a[i-1]+m;}
		max=maxim(m,maxim(b[n-2],maxim(b[n-1],b[n])));
		b[2]=a[1]+a[2];
		m=0;
		for(i=3;i<n;i++){
			m=maxim(m,b[i-3]);
			b[i]=a[i]+a[i-1]+m;}
		max=maxim(max,maxim(m,maxim(b[n-3],maxim(b[n-2],b[n-1]))));
		b[1]=a[n]+a[1];
		b[2]=a[1]+a[2];
		m=0;
		for(i=3;i<n-1;i++){
			m=maxim(m,b[i-3]);
			b[i]=a[i]+a[i-1]+m;}
		max=maxim(max,maxim(m,maxim(b[n-4],maxim(b[n-3],b[n-2]))));}
	printf("%d\n",max);
	fclose(stdout);
	return 0;
}