比赛 国庆欢乐赛3 评测结果 EEEEE
题目名称 不重叠正方形 最终得分 0
用户昵称 对立猫猫对立 运行时间 1.234 s
代码语言 C++ 内存使用 9.52 MiB
提交时间 2025-10-05 10:43:12
显示代码纯文本
#include <bits/stdc++.h>
#define int long long
#define For(i, a, b) for(int i = a; i <= b; i++)
using namespace std;
int n, m;
int a[1005][1005];
struct Node {
	int sx, sy;
	int sum;
	bool operator<(Node a) {
		return sum >= a.sum;
	}
};
vector<Node> v;
int ans = 0;
signed main() {
	freopen("zfx.in", "r", stdin);
	freopen("zfx.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> n >> m;
	For(i, 1, n) {
		For(j, 1, n) {
			cin >> a[i][j];
			a[i][j] += a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1];
		}
	}
	sort(v.begin(), v.end());
	For(i, 0, v.size() - 1) {
		For(j, i, v.size() - 1) {
			For(k, j, v.size() - 1) {
				if( (abs(v[i].sx - v[j].sx) >= 3 || abs(v[i].sy - v[j].sy) >= 3) &&
				    (abs(v[k].sx - v[j].sx) >= 3 || abs(v[k].sy - v[j].sy) >= 3) &&
				    (abs(v[i].sx - v[k].sx) >= 3 || abs(v[i].sy - v[k].sy) >= 3)) ans = max(ans, v[i].sum + v[j].sum + v[k].sum);
			}
		}
	}
	cout << ans << '\n';
	return 0;
}