Cod sursa(job #2388149)

Utilizator divianegoescuDivia Negoescu divianegoescu Data 25 martie 2019 18:25:41
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#define K 100001
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n,i,v[K],D[K],sol;
int main()
{///D[i]=suma maxima pe care o pot obtine luand grupuri de cate 2 consecutive(nu 3)
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];

    ///iau primele 2 si nu il iau pe ultimul
    D[1]=0;
    D[2]=v[1]+v[2];
    D[3]=D[2];
    for(i=4;i<n;i++)
        D[i]=max(D[i-1],D[i-3]+v[i-1]+v[i]);
    sol=D[n-1];

    ///nu il iau pe primul,il iau pe ultimul
    D[1]=D[2]=0;
    D[3]=v[2]+v[3];
    for(i=4;i<=n;i++)
        D[i]=max(D[i-1],D[i-3]+v[i-1]+v[i]);
    sol=max(sol,D[n]);

    ///iau primul si al doilea
    D[1]=D[2]=D[3]=0;
    for(i=4;i<n-1;i++)
        D[i]=max(D[i-1],D[i-3]+v[i-1]+v[i]);
    sol=max(sol,D[n-2]+v[1]+v[n]);
    fout<<sol;
    return 0;
}