Pagini recente » Istoria paginii runda/cei_mai_mari_olimpicari_runda_3/clasament | Cod sursa (job #2803718) | Cod sursa (job #3176274) | Cod sursa (job #2436859) | Cod sursa (job #1134917)
/*
Keep It Simple!
*/
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include<stdio.h>
#define MaxN 100005
#define MaxV(a,b) (a>b?a:b)
int N, v[MaxN], Dp[MaxN],max;
void Dyn(int left, int right)
{
Dp[left - 2] = 0;
Dp[left] = v[left] + v[left-1];
for (int i = left + 1; i <= right; i++)
Dp[i] = MaxV(Dp[i - 1], Dp[i - 3] + v[i] + v[i - 1]);
max = MaxV(max, Dp[right]);
}
int main()
{
freopen("oo.in", "r", stdin);
freopen("oo.out", "w", stdout);
max = -1;
scanf("%d", &N);
for (int i = 1; i <= N; i++)
scanf("%d", &v[i]);
v[N + 1] = v[1];
Dyn(2,N-1);
Dyn(3,N);
Dyn(4,N+1);
printf("%d", max);
}