Cod sursa(job #2744568)

Utilizator Simon2712Simon Slanina Simon2712 Data 24 aprilie 2021 20:38:27
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;
ifstream cin("oo.in");
ofstream cout("oo.out");
int dp[4][100101],v[100101];
int main()
{
    int n,i;
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>v[i];
    dp[1][1]=v[1];
    dp[1][2]=dp[1][3]=dp[1][4]=v[1]+v[2]; ///luam 1,2
    dp[2][1]=dp[2][2]=dp[2][3]=v[1]; ///luam n,1  (nu luam 2)
    dp[3][1]=0;   ///nu luam 1
    for(i=3;i<n;i++)
    {
        if(i>=4 && i<n-1)
            dp[2][i]=max(dp[2][i-1],dp[2][i-3]+v[i-1]+v[i]);
        if(i<n-2)
            dp[3][i]=max(dp[3][i-1],dp[3][i-3]+v[i-1]+v[i]);
        if(i>=5)
            dp[1][i]=max(dp[1][i-1],dp[1][i-3]+v[i-1]+v[i]);
    }
    cout<<max(-1,max(dp[1][n-1],max(dp[2][n-2]+v[n],dp[3][n-3]+v[n-1]+v[n])));
    return 0;
}