Cod sursa(job #2744538)

Utilizator Simon2712Simon Slanina Simon2712 Data 24 aprilie 2021 20:12:15
Problema Oo Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;
ifstream cin("oo.in");
ofstream cout("oo.out");
int dp[4][100001],v[100001];
int main()
{
    int n,i;
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>v[i];
    dp[1][1]=v[1];/// n,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,2
    for(i=3;i<n;i++)
    {
        if(i>=4)
            dp[2][i]=max(dp[2][i-1],dp[2][i-3]+v[i-1]+v[i]);
        if(i!=n-1)
            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(dp[1][n-1],max(dp[2][n-1]+v[n],dp[3][n-1]+v[n-1]+v[n]));
    return 0;
}