Cod sursa(job #33672)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 19 martie 2007 17:19:53
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>

#define nmax 100111
#define FOR(i,s,d) for(i=(s);i<(d);++i)

int n,sol,A[nmax],B[nmax];

inline int max(int a,int b)
{
	return a>b?a:b;
}

int main()
{
	freopen("oo.in","r",stdin);
	freopen("oo.out","w",stdout);
	scanf("%d",&n);
	int i;
	FOR(i,0,n)
		scanf("%d",&A[i]);

	sol=B[2]=B[1]=B[0]=A[0]+A[n-1];
	FOR(i,3,n)
	{
		B[i]=max(B[i-1],A[i]+A[i-1]+B[i-3]);
		if(i<n-2)
			sol=max(sol,B[i]);
	}

	B[0]=0;
	B[2]=B[1]=A[0]+A[1];
	sol=max(B[2],sol);
	FOR(i,3,n)
	{
		B[i]=max(B[i-1],A[i]+A[i-1]+B[i-3]);
		if(i<n-1)
			sol=max(sol,B[i]);
	}

	B[0]=B[1]=0;
	B[2]=A[1]+A[2];
	sol=max(sol,B[2]);
	FOR(i,3,n)
	{
		B[i]=max(B[i-1],A[i]+A[i-1]+B[i-3]);
		sol=max(sol,B[i]);
	}

	printf("%d\n",sol);	
	return 0;
}