Cod sursa(job #931156)

Utilizator Ionut228Ionut Calofir Ionut228 Data 28 martie 2013 00:18:37
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>

using namespace std;

ifstream fin("oo.in");
ofstream fout("oo.out");

int n, sol;
int v[100001], best[100001];

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

void solve(int x, int y)
{
    for (int i = x; i <= y; ++i)
    {
        best[i] = maxim(best[i - 1], best[i - 3] + v[i - 1] + v[i]);
        sol = maxim(sol, best[i]);
    }
}

int main()
{
    fin >> n;
    for (int i = 1; i <= n; ++i)
        fin >> v[i];
    v[0] = v[n];
    v[n + 1] = v[1];
    sol = 0;

    best[0] = 0;
    best[1] = 0;
    best[2] = v[1] + v[2];
    solve(3, n - 1);

    best[1] = 0;
    best[2] = 0;
    best[3] = v[2] + v[3];
    solve(4, n);

    best[2] = 0;
    best[3] = 0;
    best[4] = v[3] + v[4];
    solve(5, n + 1);

    fout << sol;

    fin.close();
    fout.close();
    return 0;
}