Pagini recente » Cod sursa (job #12104) | Cod sursa (job #1629792) | Cod sursa (job #2354763) | Cod sursa (job #1824913) | Cod sursa (job #130207)
Cod sursa(job #130207)
#include <cstdio>
#include <cstring>
using namespace std;
#define FIN "oo.in"
#define FOUT "oo.out"
#define MAX_N 100005
int A[MAX_N];
int B[MAX_N];
int N, T, i;
int BEST;
void solve ()
{
A[3] = B[2] + B[3];
for (i = 4; i <= N; ++i)
{
A[i] = B[i] + B[i - 1] + A[i - 3];
if (A[i - 1] > A[i])
A[i] = A[i - 1];
}
BEST = A[N];
A[2] = B[1] + B[2];
if (A[2] > BEST) BEST = A[2];
A[3] = B[2] + B[3];
if (A[3] > BEST) BEST = A[3];
for (i = 4; i < N; ++i)
{
A[i] = B[i] + B[i - 1] + A[i - 3];
if (A[i - 1] > A[i])
A[i] = A[i - 1];
}
if (A[N - 1] > BEST) BEST = A[N - 1];
A[1] = B[1] + B[N];
A[2] = A[1];
if (A[1] > BEST) BEST = A[1];
for (i = 3; i < N - 1; ++i)
{
A[i] = B[i] + B[i - 1] + A[i - 3];
if (A[i - 1] > A[i])
A[i] = A[i - 1];
}
if (A[N - 2] > BEST) BEST = A[N - 2];
printf ("%d\n", BEST);
}
int main ()
{
freopen (FIN, "r", stdin);
freopen (FOUT, "w", stdout);
scanf ("%d", &N);
for (i = 1; i <= N; ++i)
scanf ("%d", B + i);
solve ();
return 0;
}