#include #define MAX_N (11234) #define max(x,y) (x >= y ? x : y) #define min(x,y) (x <= y ? x : y) int t[MAX_N], N; long long int mem[2][MAX_N]; int main(int argc, char *noargs[]) { int i, r, k, j, pr; for(;;) { if (scanf("%d", &N) == EOF) break; for (i = 0; i < N; ++i) { scanf("%d", &t[i]); } r = 0; for (i = 0; i < N-1; ++i) { mem[r][i] = max(t[i], t[i+1]); } for (k = 4; k <= N; k += 2) { pr = r; r = 1 - r; for (i = 0; i <= N-k; ++i) { long long int pi, pj; j = i+k-1; pi = t[i] + min(mem[pr][i+1], mem[pr][i+2]); pj = t[j] + min(mem[pr][i], mem[pr][i+1]); mem[r][i] = max(pi, pj); } } printf("%lld\n", mem[r][0]); } return 0; }