Cod sursa(job #1220564)

Utilizator EpictetStamatin Cristian Epictet Data 17 august 2014 17:53:39
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n, sum, maxim, V[100010], dp[100010];

int Solve(int left, int right)
{
    int maxim = 0;
    dp[1] = dp[2] = 0;
    for (int i=left; i<=right; i++)
    {
        if (i > 2 && dp[i-3] > maxim) maxim = dp[i-3];
        dp[i] = V[i] + V[i+1] + maxim;
    }
    for (int i=right - 3; i<=right; i++)
    {
        if (dp[i] > maxim) maxim = dp[i];
    }
    return maxim;
}

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

    fout << max(Solve(1, n-2), max(Solve(2, n-1), Solve(3, n))) << '\n';
    fout.close();
    return 0;
}