Pagini recente » Cod sursa (job #2075087) | Cod sursa (job #359218) | Cod sursa (job #1248898) | Cod sursa (job #1183056) | Cod sursa (job #2043928)
#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;
}