Pagini recente » Cod sursa (job #2461784) | Cod sursa (job #1673821) | Cod sursa (job #2036663) | Cod sursa (job #2620418) | Cod sursa (job #2706487)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("oo.in");
ofstream fout ("oo.out");
const int MAXN = 100005;
int n, a[MAXN], cnt;
long long dp[3][MAXN];
void dinamica(int lower, int upper)
{
for(int i = lower+1; i <= upper; i++)
dp[cnt][i] = max(a[i] + a[i-1] + dp[cnt][i-3], dp[cnt][i-1]);
cnt++;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i];
a[n+1] = a[1];
a[0] = a[n];
dinamica(1, n-1);
dinamica(2, n);
dinamica(3, n+1);
long long mx = -1;
for(int k = 0; k < 3; k++)
for(int i = 1; i <= n-1+k; i++)
mx = max(mx, dp[k][i]);
fout << mx;
return 0;
}