Cod sursa(job #32835)

Utilizator alextheroTandrau Alexandru alexthero Data 18 martie 2007 16:14:43
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#include <string.h>

#define max(i,j) (i > j ? i : j)
#define nmax 100005

int n,a[nmax],A[nmax],r;

int main() {
	freopen("oo.in","r",stdin);
	freopen("oo.out","w",stdout);
	
	scanf("%d",&n);
	for(int i = 1; i <= n; i++) scanf("%d",&a[i]);

	memset(A,0,sizeof(A));
	A[2] = a[1] + a[2];
	for(int i = 3; i < n; i++) {
		A[i] = max(a[i] + a[i - 1] + A[i - 3],A[i - 1]);
		r = max(r,A[i]);
	}

	memset(A,0,sizeof(A));
	A[3] = a[2] + a[3];
	for(int i = 4; i <= n; i++) {
		A[i] = max(a[i] + a[i - 1] + A[i - 3],A[i - 1]);
		r = max(r,A[i]);
	}

	memset(A,0,sizeof(A));
	A[1] = a[1] + a[n];
	for(int i = 3; i < n - 1; i++) {
		A[i] = max(a[i] + a[i - 1] + A[i - 3],A[i - 1]);
		r = max(r,A[i]);
	}

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

	return 0;
}