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 |
|
|
|
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 |