Pagini recente » Cod sursa (job #3332479) | Cod sursa (job #3347187) | Cod sursa (job #3336960) | Cod sursa (job #1690392) | Cod sursa (job #3341522)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
#define nmax 100005
int n, v[nmax], dp[nmax];
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
// Case 1: don't use sector N in any pair (pairs go up to (N-2, N-1))
dp[0] = 0; dp[1] = 0; dp[2] = 0;
for (int i = 3; i <= n; i++)
dp[i] = max(dp[i - 1], dp[i - 3] + v[i - 2] + v[i - 1]);
int ans = dp[n];
// Case 2: don't use sector 1 in any pair (pairs go from (2,3) up to (N-1,N))
dp[0] = 0; dp[1] = 0; dp[2] = 0;
for (int i = 3; i <= n + 1; i++)
dp[i] = max(dp[i - 1], dp[i - 3] + v[i - 1] + v[i]);
ans = max(ans, dp[n + 1]); // Hmm, indexing gets messy...
fout << ans;
return 0;
}