Cod sursa(job #2118295)

Utilizator maria15Maria Dinca maria15 Data 30 ianuarie 2018 14:25:57
Problema Oo Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

using namespace std;

ifstream fin("oo.in");
ofstream fout("oo.out");

int n, i, v[100003], maxim, d[100003];

int main(){
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    d[1] = 0;
    d[2] = v[1]+v[2];
    d[3] = max(d[2], v[2]+v[3]);
    for(i=4;i<n;i++)
        d[i] = max(d[i-1], v[i] + v[i-1] + d[i-3]);
    maxim = d[n-1];

    /// acum, as putea sa il iau pe ultimul si nu pe primul
    d[1] = 0;
    d[2] = 0;
    d[3] = v[2]+v[3];
    for(i=4;i<=n;i++)
        d[i] = max(d[i-1], v[i] + v[i-1] + d[i-3]);
    maxim = max(maxim, d[n]);

    ///in final, iau primul si ultimul
    d[1] = v[n] + v[1];
    d[2] = d[1];
    d[3] = d[2];
    for(i=4;i<n-1;i++)
        d[i] = max(d[i-1], v[i] + v[i-1] + d[i-3]);
    maxim = max(maxim, d[n-1]);
    fout<<maxim;
    return 0;
}