Cod sursa(job #2422332)

Utilizator verde.cristian2005Verde Flaviu-Cristian verde.cristian2005 Data 18 mai 2019 13:23:50
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
int v[100001],d[100001][2];
int main()
{
    int i,n,max1=0;
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    ///ii luam pe primul si ultimul
    d[1][1]=v[1]+v[n];
    for(i=2; i<=n-2; i++)
    {
        d[i][1]=max(max(d[i-2][0],d[i-3][0]),d[i-4][0])+v[i]+v[i-1];
        d[i][0]=max(d[i-1][1],d[i-1][0]);
    }
    max1=max(max1,max(d[n-2][1],d[n-2][0]));
    ///ii luam pe primul si al doilea
    for(i=1; i<=n; i++)
        d[i][1]=d[i][0]=0;
    d[2][1]=v[2]+v[1];
    for(i=3; i<=n-1; i++)
    {
        d[i][1]=max(max(d[i-2][0],d[i-3][0]),d[i-4][0])+v[i]+v[i-1];
        d[i][0]=max(d[i-1][1],d[i-1][0]);
    }
    max1=max(max1,max(d[n-1][0],d[n-1][1]));
    ///ii luam pe al treilea si al doilea
    for(i=1; i<=n; i++)
        d[i][1]=d[i][0]=0;
    d[3][1]=v[3]+v[2];
    for(i=4; i<=n; i++)
    {
        d[i][1]=max(max(d[i-2][0],d[i-3][0]),d[i-4][0])+v[i]+v[i-1];
        d[i][0]=max(d[i-1][1],d[i-1][0]);
    }
    max1=max(max1,max(d[n][1],d[n][0]));
    out<<max1;
    return 0;
}