Cod sursa(job #41965)

Utilizator DorinOltean Dorin Dorin Data 28 martie 2007 19:00:51
Problema Oo Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
# include <stdio.h>

# define input "oo.in"
# define output "oo.out"

# define max 100011

long a[max],i,j,n,b[max],c[max],x,nr,rez,val,d[max];
int val2;

int main()
{
	freopen(input,"r",stdin);
	freopen(output,"w",stdout);

	scanf("%ld",&n);
	for(i=4;i<=n+3;i++)
		scanf("%ld",&a[i]);

	b[4] = a[4]+a[n+3];
	c[4] = 1;

	for(i = 5;i<=n+1;i++)
	{
		x=a[i]+a[i-1];
		nr = x+b[i-3];
		val = c[i-3];
		val2 = d[i-3];
		if(nr < x+b[i-4])
			nr=x+b[i-4],val=c[i-4],val2=d[i-4];
		if(nr < x+b[i-5])
			nr = x+b[i-5],val=c[i-5],val2=d[i-5];
		if(rez<b[i])
			rez = b[i];
		b[i] = nr;
		c[i] = val;
		d[i] = val2;
		if(i == 5)
			d[i] = 1;
	}
	x = a[n+1]+a[n+2];
	if(!c[n-3])
		nr=x+b[n-3];
	else
		nr = b[n-3];
	if(rez<nr)
		rez=nr;
	if(!c[n-2])
		nr=x+b[n-2];
	else
		nr = b[n-2];

	if(rez<nr)
		rez=nr;
	if(!c[n-1])
		nr=x+b[n-1];
	else
		nr = b[n-1];

	if(rez<nr)
		rez=nr;

	x = a[n+2]+a[n+3];
	if(!d[n-1] && !c[n])
		nr=x+b[n-1];
	else
		nr = b[n-1];
	if(rez<nr)
		rez=nr;
	if(!d[n-2] && !c[n])
		nr=x+b[n-2];
	else
		nr = b[n-2];

	if(rez<nr)
		rez=nr;
	if(!d[n] && !c[n])
		nr=x+b[n];
	else
		nr = b[n];

	if(rez<nr)
		rez=nr;

	printf("%ld",rez);

	return 0;
}