Mai intai trebuie sa te autentifici.
Cod sursa(job #2043919)
Utilizator | Data | 20 octombrie 2017 19:06:55 | |
---|---|---|---|
Problema | Oo | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.89 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 + 1; iter < endPoz; ++iter) {
s[iter] = max(s[iter - 1], s[iter - 3] + v[iter - 1] + v[iter]);
}
return s[endPoz - 1];
}
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];
cout << max(makeSum(1, length - 1), max(makeSum(2, length), makeSum(3, length + 1)));
return 0;
}