Submission #637939
Source Code Expand
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <utility>
#include <cctype>
#include <numeric>
using namespace std;
#define REP(i,b,n) for(int (i)=b; (i)<(int)(n); ++(i))
#define rep(i,n) REP(i,0,n)
#define foreach(c,i) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();i++)
#define all(a) (a).begin(),(a).end()
#define print(var) cout<<#var":"<<(var)<<endl;
#define printkv(key,var) cout<<#key":"<<(var)<<endl;
#define updatemax(dst,src) dst=max(dst,src);
#define updatemin(dst,src) dst=min(dst,src);
typedef long long ll;
template <typename T>
T modpow(T base, T exp, T modulus) {
base %= modulus;
T result = 1;
while (exp > 0) {
if (exp & 1) result = (result * base) % modulus;
base = (base * base) % modulus;
exp >>= 1;
}
return result;
}
int H;
int W;
ll B[302][302];
const ll kInf = 1LL << 62;
typedef vector<ll> vll;
typedef vector<vll> mll;
ll sub_solve(const mll &src, const ll kH, const ll kW) {
ll ret = -kInf;
mll rows(kH, vll(kW, 0));
rep(i,kH) {
ll t = 0;
rep(j,kW) {
t += src[i][j];
rows[i][j] = t;
}
}
vll begin(kW, -kInf), end(kW, -kInf);
rep(x0,kW) REP(x1,x0,kW) {
vll vc0(kH, 0);
rep(i,kH) {
vc0[i] = rows[i][x1] - (x0 > 0 ? rows[i][x0-1] : 0);
}
vll vc1(kH, 0);
rep(i,kH) {
vc1[i] = vc0[i];
if (i) {
vc1[i] += vc1[i-1];
}
}
// puts("----");
// for (ll l : vc1) { printkv(vc1, l) }
ll mx = -kInf;
for(int i=kH-1; i>=0; i--) {
updatemax(mx, vc1[i]);
ll d = (i > 0 ? vc1[i-1] : 0);
ll val = mx - d;
updatemax(begin[x0], val);
updatemax(end[x1], val);
}
}
// for(ll l : begin) { printkv(begin,l) }
// for(ll l : end) { printkv(end,l) }
rep(x0,kW) REP(x1,x0+1,kW) {
updatemax(ret, end[x0] + begin[x1]);
}
return ret;
}
ll solve() {
mll A0(H, vll(W)), A1(W, vll(H));
rep(i,H) rep(j,W) {
A0[i][j] = B[i][j];
A1[j][i] = B[i][j];
}
// rep(i,W) {
// rep(j,H) printf("%3lld", A1[i][j]);
// puts("");
// }
return max(sub_solve(A0, H, W), sub_solve(A1, W, H));
//return sub_solve(A1, W, H);
//return sub_solve(A0, H, W);
}
int main()
{
while (cin >> H >> W) {
rep(i,H) rep(j,W) {
cin >> B[i][j];
}
cout << solve() << endl;
}
return 0;
}
Submission Info
Submission Time |
|
Task |
D - 庭園 |
User |
brly |
Language |
C++11 (Clang++ 3.4) |
Score |
100 |
Code Size |
2633 Byte |
Status |
AC |
Exec Time |
404 ms |
Memory |
3516 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 |
106 ms |
932 KB |
sample1.txt |
AC |
28 ms |
1044 KB |
sample2.txt |
AC |
27 ms |
1040 KB |
sample3.txt |
AC |
26 ms |
1040 KB |
subtask0_0.txt |
AC |
30 ms |
1168 KB |
subtask0_1.txt |
AC |
30 ms |
1076 KB |
subtask0_10.txt |
AC |
31 ms |
1172 KB |
subtask0_11.txt |
AC |
30 ms |
1176 KB |
subtask0_12.txt |
AC |
28 ms |
1044 KB |
subtask0_13.txt |
AC |
30 ms |
1080 KB |
subtask0_14.txt |
AC |
28 ms |
1168 KB |
subtask0_2.txt |
AC |
30 ms |
1076 KB |
subtask0_3.txt |
AC |
29 ms |
1080 KB |
subtask0_4.txt |
AC |
30 ms |
1168 KB |
subtask0_5.txt |
AC |
31 ms |
1076 KB |
subtask0_6.txt |
AC |
34 ms |
1176 KB |
subtask0_7.txt |
AC |
30 ms |
1176 KB |
subtask0_8.txt |
AC |
30 ms |
1076 KB |
subtask0_9.txt |
AC |
30 ms |
1172 KB |
subtask1_0.txt |
AC |
329 ms |
3120 KB |
subtask1_1.txt |
AC |
396 ms |
3292 KB |
subtask1_10.txt |
AC |
311 ms |
3128 KB |
subtask1_11.txt |
AC |
404 ms |
3384 KB |
subtask1_12.txt |
AC |
346 ms |
3252 KB |
subtask1_13.txt |
AC |
400 ms |
3508 KB |
subtask1_14.txt |
AC |
313 ms |
3352 KB |
subtask1_2.txt |
AC |
396 ms |
3388 KB |
subtask1_3.txt |
AC |
324 ms |
3228 KB |
subtask1_4.txt |
AC |
326 ms |
3256 KB |
subtask1_5.txt |
AC |
391 ms |
3396 KB |
subtask1_6.txt |
AC |
374 ms |
3416 KB |
subtask1_7.txt |
AC |
354 ms |
3252 KB |
subtask1_8.txt |
AC |
399 ms |
3516 KB |
subtask1_9.txt |
AC |
359 ms |
3256 KB |