SuitNdtie

A-point

Apr 4th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. #include<stdio.h>
  2. typedef long long int ll;
  3. ll data[610];
  4. ll qs[610];
  5. ll dp[610][610];
  6. ll max(ll a,ll b){
  7.     return (a > b ? a : b);
  8. }
  9. ll min(ll a,ll b){
  10.     return (a < b ? a : b);
  11. }
  12.  
  13. ll cal(int l,int r){
  14.     if(l == r)return 0;
  15.     if(r - l == 1){
  16.         return min(data[l],data[r])*2 + max(data[l],data[r]);
  17.     }
  18.     if(dp[l][r] == -2e9)dp[l][r] = max((2*data[l]) + (qs[r] - qs[l]) + cal(l+1,r) , (2*data[r]) + (qs[r-1] - qs[l-1]) + cal(l,r-1));
  19.     return dp[l][r];
  20. }
  21.  
  22.  
  23. int main()
  24. {
  25.     for(int i=0;i<610;i++)for(int j=0;j<610;j++)dp[i][j] = -2e9;
  26.     int n;
  27.     scanf("%d",&n);
  28.     for(int i=1;i<=n;i++){
  29.         scanf("%lld",&data[i]);
  30.         qs[i] = qs[i-1] + data[i];
  31.     }
  32.     printf("%lld",cal(1,n));
  33.     return 0;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment