Cod sursa(job #3232132)

Utilizator AlexTrTrambitas Alexandru-Luca AlexTr Data 29 mai 2024 01:19:16
Problema Oo Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX =  100000 + 1;
int n, i, v[NMAX], dp[NMAX];

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

    f.close();

    /// ultimul cu primul

    dp[2] = v[n] + v[1];

    for (i = 3; i <= n - 1; ++i)
        dp[i] = max(dp[i-1], dp[i-3] + v[i-2] + v[i-1]);

    int v1 = dp[n-1];

    /// primul cu al doilea

    dp[3] = v[1] + v[2];

    for (i = 3; i <= n; ++i)
        dp[i] = max(dp[i-1], dp[i-3] + v[i-2] + v[i-1]);

    int v2 = dp[n];

    /// al doilea cu al treilea

    dp[4] = v[2] + v[3];

    for (i = 4; i <= n + 1; ++i)
        dp[i] = max(dp[i-1], dp[i-3] + v[i-2] + v[i-1]);

    int v3 = dp[n];

    g << max(v1, max(v2, v3));

    g.close();

    return 0;
}