Cod sursa(job #2442534)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 24 iulie 2019 12:07:19
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>

using namespace std;
ifstream cin("oo.in");
ofstream cout("oo.out");
int d[4][100005],v[100005];
int main()
{
    int n,i,Max=0;
    cin>>n;
    for (i=1; i<=n; i++)
    {
        cin>>v[i];
    }
    d[1][2]=v[1]+v[2];
    d[1][3]=d[1][2];
    d[1][4]=d[1][2];
    for (i=5; i<=n-1; i++)
    {
        d[1][i]=max(d[1][i-3]+v[i]+v[i-1],max(d[1][i-2],d[1][i-1]));
    }
    d[2][n-1]=v[n]+v[n-1];
    d[2][n-2]=d[2][n-1];
    d[2][n-3]=d[2][n-1];
    for (i=n-4; i>=2; i--)
    {
        d[2][i]=max(d[2][i+3]+v[i]+v[i+1],max(d[2][i+1],d[2][i+2]));
    }
    d[0][2]=0;
    for (i=3; i<=n-1; i++)
    {
        d[0][i]=max(d[0][i-3]+v[i]+v[i-1],max(d[0][i-2],d[0][i-1]));
    }
    d[3][1]=v[1]+v[n];
    d[3][2]=d[3][1];
    d[3][3]=d[3][1];
    for (i=4; i<=n-2; i++)
    {
        d[3][i]=max(d[3][i-3]+v[i-1]+v[i],max(d[3][i-2],d[3][i-1]));
    }
    for (i=1; i<=n; i++)
    {
        Max=max(Max,max(d[0][i],max(d[1][i],max(d[2][i],d[3][i]))));
    }
    cout<<Max;
    return 0;
}