O(nm),不会证。能否来个证明或者 hack
感觉不太需要解释
int main() {
qread(n, m);
rep(i, 1, n) rep(j, 1, m) qread(a[i][j]);
rep(i, 1, n) {
ll sum = 0;
rep(j, 1, m) sum += a[i][j];
if(sum > 0) ans1 += sum, v[i] = 1;
}
rep(i, 1, m) {
ll sum = 0;
rep(j, 1, n) if(v[j] && a[j][i] < 0) {
sum = -1;
break;
}
else if(!v[j]) sum += a[j][i];
if(sum > 0) ans1 += sum;
}
memset(v, 0, sizeof v);
rep(j, 1, m) {
ll sum = 0;
rep(i, 1, n) sum += a[i][j];
if(sum > 0) ans2 += sum, v[j] = 1;
}
rep(i, 1, n) {
ll sum = 0;
rep(j, 1, m) if(v[j] && a[i][j] < 0) {
sum = -1;
break;
}
else if(!v[j]) sum += a[i][j];
if(sum > 0) ans2 += sum;
}
cout << max(ans1, ans2) << '\n';
return 0;
}