Cod sursa(job #2422335)

Utilizator Iulia14iulia slanina Iulia14 Data 18 mai 2019 13:31:40
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 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,maxi=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[0][1]=max(d[0][n-2]+v[n]+v[1],max(d[0][n-1],d[0][n]));

    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++)
        maxi=max(maxi,max(d[0][i],max(d[1][i],max(d[2][i],d[3][i]))));
    cout<<maxi;
    return 0;


}