Cod sursa(job #3232126)

Utilizator sebigabiSebastian Itu sebigabi Data 29 mai 2024 00:09:05
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");

const int NMAX = 100000 + 1;

int n;
int v[NMAX];

int calc(int caz)
{
    int dp[NMAX] = {0};
    int st, dr;

    if(caz == 1) //1 n
    {
        dp[2] = v[1] + v[n];
        st = 3;
        dr = n-1;
    }
    if(caz == 2) //1 2
    {
        st = 3;
        dr = n;
    }
    if(caz == 3) //2 3
    {
        st = 4;
        dr = n+1;
    }

    for(int i=st; i<=dr; i++)
    {
        dp[i] = max(dp[i-1],
                    dp[i-3] + v[i-2] + v[i-1]);
    }

    return dp[dr];
}

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

    int a = calc(1);
    int b = calc(2);
    int c = calc(3);

    out<<max(
             max(a, b),
             c
            );
    return 0;
}