Pagini recente » Cod sursa (job #2175067) | Cod sursa (job #842269) | Cod sursa (job #2083525) | Cod sursa (job #2677990) | Cod sursa (job #2677196)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
const int Nmax = 1e6 + 1,
inf = 0x3f3f3f3f;
int n,
V[Nmax],
dp[Nmax];
int solve(int st, int N)
{
for(int i = 0; i <= n + 1; i++)
dp[i] = -inf;
dp[st+1] = V[st] + V[st+1];
for(int i = st; i <= N; i++)
dp[i] = max(dp[i-1], dp[i-3] + V[i] + V[i+1]);
return dp[N];
}
int main()
{
in>>n;
for(int i = 1; i <= n; i++)
in>>V[i];
int rez = -inf;
V[n+1] = V[1];
for(int i = 1; i <= 3; i++){
int suma;
switch(i){
case 1:
suma = solve(1, n-2);
break;
case 2:
suma = solve(2, n+1);
break;
case 3:
suma = solve(1, n-2);
break;
}
if(suma > rez)
rez = suma;
}
out<<rez;
}