Cod sursa(job #32766)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 18 martie 2007 14:13:56
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>

#define maxn 100010

char a[maxn];
int n,sol;
int c[maxn];

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

int count(int x,int y)
{
	int c0,c1,c2,c3,i;

	c1=a[x+1]+a[x];
	c0=0;
	c2=a[x+1]+a[x+2];
	c3=a[x+2]+a[x+3];

	for (i=x;i<y;i++)
	{
	  if ((i+3<y) && (c0+a[i+2]+a[i+3]>c3)) c3=c0+a[i+2]+a[i+3];
	  if (c0>c1) c1=c0;

	  c0=c1;
	  c1=c2;
	  c2=c3;
	  c3=0;
	}

	return c0;
}

int main()
{
	freopen("oo.in","r",stdin);
	freopen("oo.out","w",stdout);

	int i;

	scanf("%d",&n);

	for (i=1;i<=n;i++) scanf("%d",&a[i]);
	a[0]=a[n];

	sol=max(max(count(1,n),count(2,n+1)),count(0,n-1));

	printf("%d\n",sol);

    return 0;
}