Cod sursa(job #2727463)

Utilizator George_CristianGeorge Dan-Cristian George_Cristian Data 21 martie 2021 22:14:43
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;

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

#define NMAX 100005

int n, v[NMAX], rez, dp[NMAX];

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

void caz1() {
    //Se iau sectoarele 1 si 2
    dp[1] = 0;
    dp[2] = dp[3] = dp[4] = v[1] + v[2];
    for (int i = 5; i < n; ++i)
        dp[i] = max(dp[i - 1], v[i] + v[i - 1] + dp[i - 3]);
    rez = dp[n - 1];
}

void caz2() {
    //Se iau sectoarele n si 1
    dp[1] = dp[2] = dp[3] = v[n] + v[1];
    for (int i = 4; i < n - 1; ++i)
        dp[i] = max(dp[i - 1], v[i] + v[i - 1] + dp[i - 3]);
    rez = max(rez, dp[n - 2]);
}

void caz3() {
    //Se iau sectoarele 2 si 3
    dp[1] = dp[2] = 0;
    dp[3] = dp[4] = dp[5] = v[2] + v[3];
    for (int i = 6; i <= n; ++i)
        dp[i] = max(dp[i - 1], v[i] + v[i - 1] + dp[i - 3]);
    rez = max(rez, dp[n]);
}

int main() {
    citire();
    caz1();
    caz2();
    caz3();
    g << rez;
    return 0;
}