Cod sursa(job #2570822)

Utilizator andreighinea1Ghinea Andrei-Robert andreighinea1 Data 4 martie 2020 19:32:48
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#define nmax 100001
#define inf 0x3f3f3f3f

using namespace std;

ifstream f("oo.in");
ofstream o("oo.out");

int n,i,v[nmax],dp0[nmax],dp1[nmax],dp2[nmax],sol;

void din(){
    for(i=2;i<=n;++i){
        dp0[i]=max(dp0[i-1],dp2[i-1]);
        dp1[i]=dp0[i-1]+v[i];
        dp2[i]=dp1[i-1]+v[i];
    }
}

int main()
{
    f >> n;
    for(i=1;i<=n;++i)
        f >> v[i];
    if(n==2){
        o << v[1]+v[2] << '\n';
        return 0;
    }

    //daca nu iau nmc la inceput
    dp0[1]=0;
    dp1[1]=-inf;
    dp2[1]=-inf;
    din();
    sol=max(sol,max(dp2[n],dp0[n]));

    //daca iau 1 ou la inceput
    dp0[1]=-inf;
    dp1[1]=v[1];
    dp2[1]=-inf;
    din();
    sol=max(sol,dp0[n]);

    //daca iau 2 oua la inceput
    dp0[1]=-inf;
    dp1[1]=-inf;
    dp2[1]=v[1];
    din();
    sol=max(sol,dp1[n]);

    o << sol << '\n';

    return 0;
}