Cod sursa(job #2706487)

Utilizator Robert.BrindeaBrindea Robert Robert.Brindea Data 15 februarie 2021 08:39:45
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAXN = 100005;
int n, a[MAXN], cnt;
long long dp[3][MAXN];
void dinamica(int lower, int upper)
{
    for(int i = lower+1; i <= upper; i++)
        dp[cnt][i] = max(a[i] + a[i-1] + dp[cnt][i-3], dp[cnt][i-1]);
    cnt++;
}

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

    a[n+1] = a[1];
    a[0] = a[n];
    dinamica(1, n-1);
    dinamica(2, n);
    dinamica(3, n+1);

    long long mx = -1;
    for(int k = 0; k < 3; k++)
        for(int i = 1; i <= n-1+k; i++)
            mx = max(mx, dp[k][i]);
    fout << mx;
    return 0;
}