Cod sursa(job #339514)

Utilizator savimSerban Andrei Stan savim Data 10 august 2009 10:31:48
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <stdio.h>
#include <algorithm>
#include <string.h>

using namespace std;

#define MAX_N 100010

int A[MAX_N], c[MAX_N];
int n, sol;

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]);
	A[n + 1] = A[1]; A[n + 2] = A[2];

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

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

	return 0;
}