Cod sursa(job #131200)

Utilizator marius135Dumitran Adrian Marius marius135 Data 3 februarie 2008 13:10:48
Problema Oo Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<string.h>
#define maxn (1<<17)
long n,s[maxn],a[maxn],sol;

long max(long a,long b)
{
	if(  a >b) return a;
	return b;
}


int main()
{
	freopen("oo.in","r",stdin);
	freopen("oo.out","w",stdout);
	
	scanf("%ld",&n);
	for( long i = 1; i <= n; ++i)
	{
		scanf("%ld",&a[i]);
	}
	n--;
	
	s[0] = 0;
	s[1] = 0;
	s[2] = a[1]+a[2];
	for(long i = 3; i <= n; ++i)
		s[i] = max(s[i-1], s[i-3] + a[i-1] +a[i]);
	sol = s[n];
	memset(s,0,sizeof(s));
	s[3] = a[2] + a[3];
	n++;
	for(long i = 3; i <= n; ++i)
		s[i] = max(s[i-1], s[i-3] + a[i-1] +a[i]);
	sol = max(sol,s[n]);
	
	
	memset(s,0,sizeof(s));
	
	
	for(long i = 4; i < n; ++i)
		s[i] = max(s[i-1], s[i-3] + a[i-1] +a[i]);
	sol = max(sol,s[n]+a[1] + a[n]);
	
	
	printf("%ld\n",sol);
	return 0;
}