Submission #617810
Source Code Expand
#include <bits/stdc++.h>
#define long long long
#define LOOPVAR_TYPE long
#define all(x) (x).begin(), (x).end()
#define sz(x) ((LOOPVAR_TYPE)(x).size())
#define foreach(it, X) for(__typeof((X).begin()) it = (X).begin(); it != (X).end(); it++)
#define GET_MACRO(_1, _2, _3, NAME, ...) NAME
#define _rep(i, n) _rep2(i, 0, n)
#define _rep2(i, a, b) for(LOOPVAR_TYPE i = (LOOPVAR_TYPE)(a); i < (LOOPVAR_TYPE)(b); i++)
#define rep(...) GET_MACRO(__VA_ARGS__, _rep2, _rep)(__VA_ARGS__)
#define fir first
#define sec second
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define eb emplace_back
const double EPS = 1e-9;
const double PI = acos(-1.0);
const long INF = 1070000000LL;
const long MOD = 1000000007LL;
using namespace std;
typedef istringstream iss;
typedef stringstream sst;
typedef pair<LOOPVAR_TYPE, LOOPVAR_TYPE> pi;
typedef vector<LOOPVAR_TYPE> vi;
int H, W;
int B[310][310];
long vs[310][310];
long solve(){
rep(j, W){
vs[0][j] = 0;
rep(i, H){
vs[i+1][j] = vs[i][j] + B[i][j];
}
}
long sub[310][310];
rep(u, H) rep(l, u, H){ // [u, l]
long a[310];
rep(j, W){
a[j] = vs[l+1][j] - vs[u][j];
}
long sum[310] = {0};
rep(j, W){
sum[j+1] = sum[j] + a[j];
}
long ma = -INF*INF;
long mi = 0;
rep(j, W){
ma = max(ma, sum[j+1] - mi);
mi = min(mi, sum[j+1]);
}
sub[u][l] = ma;
}
long subMaxU[310];
long subMaxD[310];
rep(r, H){
subMaxU[r] = subMaxD[r] = -INF*INF;
rep(s, r+1){
subMaxU[r] = max(subMaxU[r], sub[s][r]);
}
rep(s, r, H){
subMaxD[r] = max(subMaxD[r], sub[r][s]);
}
}
long maxU[310];
long maxD[310];
maxU[0] = subMaxU[0];
rep(r, 1, H){
maxU[r] = max(maxU[r-1], subMaxU[r]);
}
maxD[H-1] = subMaxD[H-1];
for(int r = H-2; r >= 0; r--){
maxD[r] = max(maxD[r+1], subMaxD[r]);
}
long res = -INF*INF;
rep(r, H-1){
res = max(res, maxU[r] + maxD[r+1]);
}
return res;
}
int main(){
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> H >> W;
rep(i, H) rep(j, W) cin >> B[i][j];
long ans = solve();
int esc[310][310];
rep(i, H) rep(j, W){
esc[j][i] = B[i][j];
}
rep(i, H) rep(j, W){
B[j][i] = esc[j][i];
}
swap(H, W);
//rep(i,H){rep(j,W)cout<<B[i][j]<<" ";cout<<endl;}
ans = max(ans, solve());
cout << ans << endl;
}
Submission Info
Submission Time |
|
Task |
D - 庭園 |
User |
mkc1370 |
Language |
C++ (GCC 4.9.2) |
Score |
100 |
Code Size |
2366 Byte |
Status |
AC |
Exec Time |
165 ms |
Memory |
2988 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
All |
Score / Max Score |
0 / 0 |
50 / 50 |
50 / 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 |
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 |
24 ms |
920 KB |
sample1.txt |
AC |
26 ms |
924 KB |
sample2.txt |
AC |
25 ms |
928 KB |
sample3.txt |
AC |
25 ms |
924 KB |
subtask0_0.txt |
AC |
28 ms |
1048 KB |
subtask0_1.txt |
AC |
29 ms |
1184 KB |
subtask0_10.txt |
AC |
28 ms |
1184 KB |
subtask0_11.txt |
AC |
27 ms |
1060 KB |
subtask0_12.txt |
AC |
28 ms |
1192 KB |
subtask0_13.txt |
AC |
28 ms |
1064 KB |
subtask0_14.txt |
AC |
28 ms |
1300 KB |
subtask0_2.txt |
AC |
26 ms |
1108 KB |
subtask0_3.txt |
AC |
27 ms |
1304 KB |
subtask0_4.txt |
AC |
26 ms |
1304 KB |
subtask0_5.txt |
AC |
27 ms |
1184 KB |
subtask0_6.txt |
AC |
27 ms |
1184 KB |
subtask0_7.txt |
AC |
28 ms |
1300 KB |
subtask0_8.txt |
AC |
26 ms |
1168 KB |
subtask0_9.txt |
AC |
28 ms |
1116 KB |
subtask1_0.txt |
AC |
136 ms |
2720 KB |
subtask1_1.txt |
AC |
151 ms |
2980 KB |
subtask1_10.txt |
AC |
126 ms |
2728 KB |
subtask1_11.txt |
AC |
159 ms |
2980 KB |
subtask1_12.txt |
AC |
141 ms |
2716 KB |
subtask1_13.txt |
AC |
163 ms |
2988 KB |
subtask1_14.txt |
AC |
135 ms |
2728 KB |
subtask1_2.txt |
AC |
158 ms |
2840 KB |
subtask1_3.txt |
AC |
137 ms |
2712 KB |
subtask1_4.txt |
AC |
141 ms |
2852 KB |
subtask1_5.txt |
AC |
157 ms |
2852 KB |
subtask1_6.txt |
AC |
148 ms |
2712 KB |
subtask1_7.txt |
AC |
142 ms |
2720 KB |
subtask1_8.txt |
AC |
165 ms |
2976 KB |
subtask1_9.txt |
AC |
142 ms |
2844 KB |