Pagini recente » Cod sursa (job #249988) | Cod sursa (job #2377634) | Cod sursa (job #2327573) | Cod sursa (job #97893) | Cod sursa (job #33440)
Cod sursa(job #33440)
#include <stdio.h>
int N, A[10000], Bst[10000], Res;
int solve(int l, int r)
{
int i;
for (i = l; i <= r; i++)
{
Bst[i] = Bst[i - 1];
if (Bst[i] < Bst[(i + N - 3) % N] + A[i - 1] + A[i])
Bst[i] = Bst[(i + N - 3) % N] + A[i - 1] + A[i];
}
return l <= r ? Bst[r] : 0;
}
int main(void)
{
FILE *f;
int i, t;
f = fopen("oo.in", "r");
fscanf(f, "%d", &N);
for (i = 0; i < N; i++)
fscanf(f, "%d", A + i);
fclose(f);
Res = Bst[1] = Bst[2] = A[0] + A[1];
Res = Res < (t = solve(3, N - 2)) ? t : Res;
Bst[N - 1] = 0, Bst[0] = Bst[1] = A[0] + A[N - 1];
Res = Res < (t = solve(2, N - 3)) ? t : Res;
Bst[N - 2] = 0, Bst[N - 1] = Bst[0] = A[N - 1] + A[N - 2];
Res = Res < (t = solve(1, N - 4)) ? t : Res;
f = fopen("oo.out", "w");
fprintf(f, "%d\n", Res);
fclose(f);
return 0;
}