Pagini recente » Cod sursa (job #2426595) | Cod sursa (job #1533626) | Cod sursa (job #1147150) | Cod sursa (job #2550606) | Cod sursa (job #2640712)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
#define Nmax 100010
ifstream fin ("oo.in");
ofstream fout ("oo.out");
#define cin fin
#define cout fout
/*
ifstream fin("test.in");
#define cin fin
*/
int n;
int def[Nmax];
int dp1[Nmax], dp2[Nmax], dp3[Nmax];
void solve() {
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> def[i];
}
def[n + 1] = def[1];
/// Primu caz
for(int i = 1; i <= n - 2; i++) {
dp1[i] = max(dp1[i - 1], dp1[max(i - 3, 0)] + def[i] + def[i + 1]);
}
int val1 = dp1[n - 2];
/// Al doilea caz
for(int i = 2; i <= n - 1; i++) {
dp2[i] = max(dp2[i - 1], dp2[max(i - 3, 0)] + def[i] + def[i + 1]);
}
int val2 = dp2[n - 1];
/// Al treilea caz aparent
for(int i = 3; i <= n; i++) {
dp3[i] = max(dp3[i - 1], dp3[max(i - 3, 0)] + def[i] + def[i + 1]);
}
int val3 = dp3[n];
/*
for(int i = 1; i <= n; i++) {
cout << dp2[i] << " ";
}
cout << endl;
}
*/
cout << max({val1, val2, val3});
}
int main() {
ios_base::sync_with_stdio(0);
cin .tie(0);
cout.tie(0);
int testCases = 1;
//cin >> testCases;
while(testCases--) {
solve();
}
}