#include "stdio.h" int n,a[2000],s[4001]; int max; int m[2000][2001]; int Max(int a,int b) { if(a>b) return a; return b; } int main() { int i,j; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); s[i+1]=s[i]+a[i]; } for(i=n;i<2*n;i++) s[i+1]=s[i]+a[i%n]; for(j=1;j<n;j++) { for(i=0;i<n;i++) m[i][j]=Max(m[(i+1)%n][j-1],m[i][j-1])+s[i+j+1]-s[i]; } max=m[0][n-1]; for(i=0;i<n;i++) { if(max<m[i][n-1]) max=m[i][n-1]; } printf("%d\n",max); return 0; } /************************************************************** Problem: 2117 User: admin Language: C Result: Accepted Time:121 ms Memory:16800 kb ****************************************************************/