Cod sursa(job #2386101)

Utilizator mariusn01Marius Nicoli mariusn01 Data 22 martie 2019 10:41:04
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
 
using namespace std;
int D[100010], v[100010];
int n, sol, i;
int main () {
	/// D[i] = suma maxima de a lua grupuri de cate doua consecutive (dar nu de cate 3) pe care o pot obtine din primele i elemente nu neaparat facand parte din suma ultimul
    ifstream fin ("oo.in");
    ofstream fout("oo.out");
 
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];
 
    /// iau pe primele 2
    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], v[i] + v[i-1] + D[i-3]);
 
    sol = D[n-1];
 
    /// nu iau 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]);
    sol = max(sol, D[n]);
 
    /// iau pe primul si pe ultimul
    D[1] = 0;
    D[2] = 0;
    D[3] = 0;
    for (i=4; i<n-1; i++)
        D[i] = max(D[i-1], v[i] + v[i-1] + D[i-3]);
 
    sol = max(sol, D[n-2] + v[1] + v[n]);
 
    fout<<sol;
 
    return 0;
}