Pagini recente » Cod sursa (job #1643448) | Cod sursa (job #866324) | Cod sursa (job #2032520) | Cod sursa (job #1546506) | Cod sursa (job #1096058)
#include <cstdio>
using namespace std;
#define maxim(a,b) ((a>b)?(a):(b))
#define NMAX 100015
int V[NMAX];
int DP[NMAX];
int N,Sol;
int Read()
{
freopen("oo.in","r",stdin);
scanf("%d",&N);
for(int i=1;i<=N;i++)
scanf("%d",&V[i]);
}
void Solve(int a, int b)
{
//DP[i] = numarul maxim de oua ce pot fi adunate pana in sectorul i
DP[a] = 0;
DP[a+1] = V[a] + V[a+1];
for(int i=a+2;i<=b;i++)
DP[i] = maxim(DP[i-1], DP[i-3]+V[i-1]+V[i]);
Sol = maxim(Sol, DP[b]);
}
void Print()
{
freopen("oo.out","w",stdout);
printf("%d\n",Sol);
}
int main()
{
Read();
V[N+1] = V[1];
Solve(1,N-1);
Solve(2,N);
Solve(3,N+1);
Print();
return 0;
}