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
AC × 4
AC × 15
AC × 30
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