Cod sursa(job #2043928)

Utilizator skeniaTirla Ovidiu skenia Data 20 octombrie 2017 19:10:06
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>

#define xx 100005

using namespace std;

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

int length, v[xx];

void makeZero(int arr[100005]);

int s[xx];

int makeSum(int startPoz, int endPoz) {
    makeZero(s);
    s[startPoz + 1] = v[startPoz] + v[startPoz + 1];
//    cout<<s[startPoz + 1]<<' ';
    for (int iter = startPoz + 2; iter <= endPoz; ++iter) {
        s[iter] = max(s[iter - 1], s[iter - 3] + v[iter - 1] + v[iter]);
    }
    return s[endPoz];
}

void makeZero(int arr[100005]) {
    for (int iter = 0; iter <= length; iter++)
        arr[iter] = 0;

}

int main() {
    fin >> length;
    for (int iter = 1; iter <= length; ++iter) {
        fin >> v[iter];
//        cout<<v[iter]<<' ';
    }
    v[0] = v[length];
    v[length + 1] = v[1];
    fout << max(makeSum(1, length - 1), max(makeSum(2, length), makeSum(3, length + 1)));

    return 0;
}