Pagini recente » Cod sursa (job #25458) | Cod sursa (job #1053748) | Cod sursa (job #831125) | Cod sursa (job #936401) | Cod sursa (job #3146582)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("oo.in");
ofstream cout("oo.out");
int v[100001];
int dp[100001];
int main(){
int best_answer = 0;
int n;
cin >> n;
for (int i = 1; i <= n; i++){
cin >> v[i];
}
dp[1] = v[n] + v[1];
dp[2] = dp[1];
for (int i = 3; i <= n - 2; i++){
dp[i] = max(v[i] + v[i - 1] + dp[i - 3], dp[i - 1]);
}
dp[n - 1] = dp[n - 2];
best_answer = dp[n - 1];
memset(dp, 0, sizeof(dp));
dp[1] = 0;
dp[3] = v[2] + v[3];
dp[2] = dp[3];
for (int i = 4; i <= n; i++){
dp[i] = max(v[i] + v[i - 1] + dp[i - 3], dp[i - 1]);
}
if (dp[n] > best_answer)
best_answer = dp[n];
memset(dp, 0, sizeof(dp));
dp[2] = v[1] + v[2];
dp[3] = dp[2];
for (int i = 4; i <= n - 1; i++){
dp[i] = max(v[i] + v[i - 1] + dp[i - 3], dp[i - 1]);
}
dp[n] = dp[n-1];
if (dp[n] > best_answer)
best_answer = dp[n];
cout << best_answer;
}