Cod sursa(job #1305860)

Utilizator salam.bossSalam Valorosu salam.boss Data 30 decembrie 2014 11:32:43
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
/*
Hai in vacante
Pe la Saint Tropez
Prin America si prin Africa
Ca trece viata
Ragadaga da
*/

#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("oo.in");
ofstream g ("oo.out");

const int NMAX = 100000 + 3;

int n;
int sol;
int v[NMAX];
int best[NMAX];

void citeste() {
    f >> n;
    for (int i = 1; i <= n; i++) f >> v[i];
    v[n + 1] = v[1];
}

void rezolva(int start, int sfarsit) {
    best[start] = 0;
    best[start + 1] = v[start] + v[start + 1];
    for (int i = start + 2; i <= sfarsit; i++)
        best[i] = max(best[i - 3] + v[i - 1] + v[i], best[i - 1]);
    sol = max(best[sfarsit], sol);
}

int main() {
    citeste();
    rezolva(1, n - 1);
    rezolva(2, n);
    rezolva(3, n + 1);
    g << sol << '\n';
}