Pagini recente » Cod sursa (job #32262) | Cod sursa (job #3296551)
#include <fstream>
using namespace std;
ifstream cin("oo.in");
ofstream cout("oo.out");
const int NMAX = 100000;
int n, s[NMAX], p1[NMAX], m1[NMAX], p2[NMAX], m2[NMAX], p3[NMAX], m3[NMAX];
int at(int s[], int i) {
int r = i % n;
if(r < 0) r += n;
return s[r];
}
int main(){
cin >> n;
for(int i = 0; i < n; i++) {
cin >> s[i];
}
for(int i = 1; i < n-1; i++) {
p1[i] = at(s, i-1) + at(s, i) + at(m1, i-3);
m1[i] = max(at(p1, i), at(m1, i-1));
}
// m1[n-2]
for(int i = 2; i < n; i++) {
p2[i] = at(s, i-1) + at(s, i) + at(m2, i-3);
m2[i] = max(at(p2, i), at(m2, i-1));
}
//m2[n-1]
for(int i = 3; i < n; i++) {
p3[i] = at(s, i-1) + at(s, i) + at(m3, i-3);
m3[i] = max(at(p3, i), at(m3, i-1));
}
p3[0] = at(s, -1) + at(s, 0) + at(m3, -3);
m3[0] = max(at(p3, 0), at(m3, -1));
//m3[0]
cout << max(m1[n-2], max(m2[n-1], m3[0])) << "\n";
return 0;
}