Cod sursa(job #1329094)

Utilizator smaraldaSmaranda Dinu smaralda Data 29 ianuarie 2015 00:34:03
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

const int NMAX = 1e5 + 5;

int n, res, ou[NMAX], d[NMAX];

void f (int start, int fin) {
    int i;
    memset(d, 0, sizeof(d));

    d[start + 1] = ou[start] + ou[start + 1];
    for(i = start + 2; i <= fin; ++ i)
        d[i] = max(d[i - 1], d[i - 3] + ou[i - 1] + ou[i]);

    res = max(res, d[fin]);
}

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", &ou[i]);

    ou[n + 1] = ou[1];
    
    f(1, n - 1);
    f(2, n);
    f(3, n + 1);

    printf("%d\n", res);
    return 0;
}