Cod sursa(job #2652310)

Utilizator loraclorac lorac lorac Data 24 septembrie 2020 18:19:39
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
const int lim=1e5+10;
int dp[3][lim];
int v[lim];
int main()
{
    int n;
    in>>n;
    for(int i=1;i<=n;++i)
        in>>v[i];
    if(n==2) {out<<v[1]+v[2]<<'\n';return 0;}
    v[n+1]=v[1];
    dp[0][2]=dp[0][3]=dp[0][4]=v[1]+v[2];
    dp[1][3]=dp[1][4]=v[2]+v[3];
    dp[2][4]=v[3]+v[4];
    for(int i=5;i<=n+1;++i)
    {
        dp[0][i]=dp[0][i-1];
        dp[1][i]=dp[1][i-1];
        dp[2][i]=dp[2][i-1];
        if(i<=n-1)
            dp[0][i]=max(dp[0][i],dp[0][i-3]+v[i-1]+v[i]);
        if(i<=n)
            dp[1][i]=max(dp[1][i],dp[1][i-3]+v[i-1]+v[i]);
        dp[2][i]=max(dp[2][i],dp[2][i-3]+v[i-1]+v[i]);
    }
    out<<max({dp[0][n+1],dp[1][n+1],dp[2][n+1]})<<'\n';
    return 0;
}