Submission #1175794


Source Code Expand

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cmath>
#include <map>

typedef long long ll;
#define fi first
#define se second

int H;
int W;
int B[312][312];
ll dp[312][312];
ll big1[312][312];
ll big2[312][312];

using namespace std;

int main(){
  
  int i;
  int j;
  int k;
  int l;
  
  cin>>H>>W;
  

  
  for( i = 0; i < H; i++ ){
    for( j = 0; j < W; j++ ){
      scanf("%d", &B[i][j]);
      if( j ) dp[i][j] = dp[i][j-1] + B[i][j];
      else{   dp[i][0] = B[i][0];            }
      big1[i][j] = -1123456789;
      big2[i][j] = -1123456789;
    }
  }
  
  for( i = 1; i < H; i++ ){
    for( j = 0; j < W; j++ ){
      dp[i][j] += dp[i-1][j];
    }
  }
  
  ll num1 = -1123456789;
  ll num2 = -1123456789;
  
  
  for( k = 0; k < H; k++ ){
    for( l = 0; l < W; l++ ){
      for( i = k; i < H; i++ ){
        num1 = -1123456789;
        for( j = l; j < W; j++ ){
          if( k==0 && l==0 ){
            num2 = dp[i][j];
          }
          else if( k==0 ){
            num2 = dp[i][j] - dp[i][l-1];
          }
          else if( l==0 ){
            num2 = dp[i][j] - dp[k-1][j];
          }
          else{
            num2 = dp[i][j] - dp[k-1][j] - dp[i][l-1] + dp[k-1][l-1];
          }
          
          //if( j == 0) printf("%lld %lld", num1, num2 );
          num1 = max( num1, num2 );
          
          big1[i][j] = max( big1[i][j], num1 );
          big2[H-k-1][W-l-1] = max( big2[H-k-1][W-l-1], num1 );
          
          /*if( k ){
            big2[H-k-1][W-l-1] = max( big2[H-k-1][W-l-1], big2[H-k][W-1-l] );
          }
          if( l ){
            big2[H-k-1][W-l-1] = max( big2[H-k-1][W-l-1], big2[H-k-1][W-l] );
          }
          */
        } 
      }
    }
  }
  
  for( i = 0; i < H; i++ ){
    for( j = 0; j < W; j++ ){
      if( j ) big2[i][j] = max( big2[i][j], big2[i][j-1] );
      if( i ) big2[i][j] = max( big2[i][j], big2[i-1][j] );
    }
  }
  
  
  ll ans = -2123456789;
  num2 = -1123456789;
  
  /*
  puts("");
  
  for( i = 0; i < H; i++ ){
    for( j = 0; j < W; j++ ){
      if( j ) printf(" ");
      printf("%d", dp[i][j]);
    }
    puts("");
  }
  
  puts("");
  
  for( i = 0; i < H; i++ ){
    for( j = 0; j < W; j++ ){
      if( j ) printf(" ");
      printf("%lld", big1[i][j]);
    }
    puts("");
  }
  
  puts("");
  
  for( i = 0; i < H; i++ ){
    for( j = 0; j < W; j++ ){
      if( j ) printf(" ");
      printf("%lld", big2[H-1-i][W-1-j]);
    }
    puts("");
  }
  puts("");
  */
  
  for( i = 0; i < H; i++ ){
    for( j = 0; j < W; j++ ){
      
      if( j == W-1 && i == H-1 ) break;
      else if( j == W-1 ){
        num2 = big1[i][j];
        num2 += big2[H-i-2][W-1]; 
      }
      else if( i == H-1 ){
        num2 = big1[i][j];
        num2 += big2[H-1][W-j-2];
      }
      else{
        num2 = big1[i][j];
        num2 += max( big2[H-1][W-j-2], big2[H-i-2][W-1] );
      }
      
      /*if( ans < num2 ){
        ans = num2;
        printf("%lld %lld\n", big1[i][j], big2[H-i-2][W-j-2]);
        printf("%d %d %lld\n", i, j, ans);
      }*/
      ans = max( ans, num2 );
    }
  }
  
  cout<<ans<<endl;
  
  
  return 0;
}

Submission Info

Submission Time
Task D - 庭園
User Ice_in_juice
Language C++14 (GCC 5.4.1)
Score 50
Code Size 3322 Byte
Status TLE
Exec Time 2655 ms
Memory 2688 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:34:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
       scanf("%d", &B[i][j]);
                            ^

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 50 / 50 0 / 50
Status
AC × 4
AC × 15
AC × 19
TLE × 15
Set Name Test Cases
Sample sample0.txt, sample1.txt, sample2.txt, sample3.txt
Subtask1 subtask0_0.txt, subtask0_1.txt, subtask0_10.txt, subtask0_11.txt, subtask0_12.txt, subtask0_13.txt, subtask0_14.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt
All sample0.txt, sample1.txt, sample2.txt, sample3.txt, subtask0_0.txt, subtask0_1.txt, subtask0_10.txt, subtask0_11.txt, subtask0_12.txt, subtask0_13.txt, subtask0_14.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt, subtask1_0.txt, subtask1_1.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_2.txt, subtask1_3.txt, subtask1_4.txt, subtask1_5.txt, subtask1_6.txt, subtask1_7.txt, subtask1_8.txt, subtask1_9.txt
Case Name Status Exec Time Memory
sample0.txt AC 1 ms 256 KB
sample1.txt AC 1 ms 256 KB
sample2.txt AC 1 ms 256 KB
sample3.txt AC 1 ms 256 KB
subtask0_0.txt AC 5 ms 640 KB
subtask0_1.txt AC 5 ms 640 KB
subtask0_10.txt AC 6 ms 640 KB
subtask0_11.txt AC 5 ms 640 KB
subtask0_12.txt AC 6 ms 640 KB
subtask0_13.txt AC 5 ms 640 KB
subtask0_14.txt AC 5 ms 640 KB
subtask0_2.txt AC 4 ms 640 KB
subtask0_3.txt AC 5 ms 640 KB
subtask0_4.txt AC 5 ms 640 KB
subtask0_5.txt AC 5 ms 640 KB
subtask0_6.txt AC 5 ms 640 KB
subtask0_7.txt AC 5 ms 640 KB
subtask0_8.txt AC 4 ms 640 KB
subtask0_9.txt AC 6 ms 640 KB
subtask1_0.txt TLE 2655 ms 2432 KB
subtask1_1.txt TLE 2655 ms 2432 KB
subtask1_10.txt TLE 2655 ms 2432 KB
subtask1_11.txt TLE 2655 ms 2560 KB
subtask1_12.txt TLE 2655 ms 2432 KB
subtask1_13.txt TLE 2655 ms 2560 KB
subtask1_14.txt TLE 2655 ms 2560 KB
subtask1_2.txt TLE 2655 ms 2560 KB
subtask1_3.txt TLE 2655 ms 2432 KB
subtask1_4.txt TLE 2655 ms 2432 KB
subtask1_5.txt TLE 2655 ms 2560 KB
subtask1_6.txt TLE 2655 ms 2560 KB
subtask1_7.txt TLE 2655 ms 2560 KB
subtask1_8.txt TLE 2655 ms 2688 KB
subtask1_9.txt TLE 2655 ms 2432 KB