Cod sursa(job #3171218)

Utilizator europeanMafiot European european Data 18 noiembrie 2023 16:00:16
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <bits/stdc++.h>
using namespace std;

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

/* muie pbinfo
#define miauDebug
#ifdef miauDebug
#define mau(x) MIAUMIAU(#x, x)
#else
#define mau(x)
#endif

void MIAUMIAU(const char* var_name, auto var_value) {
    cout << var_name << " = " << var_value << endl;
}
*/

using ll = long long;
const int nM = 1e5+5;
const ll MOD = 4001;
// :3

int dp[nM];

void solve() {
    int n; fin >> n;
    vector<int> v(n+5);

    for(int z = 1; z <= n; z++)
        fin >> v[z];

    dp[2] = v[1]+v[2], dp[3]=dp[2], dp[4]=dp[3];
    int mx = dp[2];

    for(int z = 5; z < n; z++)
    {
        dp[z] = max(dp[z-1], dp[z-3] + v[z-1] + v[z]);
        mx = max(mx, dp[z]);
    }

    for(int z = 0; z < nM; z++) dp[z]=0;

    dp[1] = v[n] + v[1];
    dp[2] = dp[1];
    dp[3] = dp[2];
    mx = max(dp[1], mx);
    for(int z = 4; z < n-1; z++)
    {
        dp[z] = max(dp[z-1], dp[z-3] + v[z-1] + v[z]);
        mx = max(mx, dp[z]);
    }

    for(int z = 0; z < nM; z++) dp[z]=0;
    for(int z = 3; z <= n; z++)
    {
        dp[z] = max(dp[z-1], dp[z-3] + v[z-1] + v[z]);
        mx = max(mx, dp[z]);
    }

    fout << mx;
}

signed main()
{
    cout.tie(NULL);
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);

    int tt = 1; //cin >> tt;

    while(tt--)
        solve();
}