rt,wssb,看见空间比较紧之后就注释了#define int long long
,结果读入的时候scanf
写的还是%lld
,结果本地一直过不了样例。
调试的时候发现读入的 x 和 y 全部都变成了 0,可是我一开始读入的 n 和 m 却都是对的,所以用%lld
读入int
型到底会怎么变?
(%lld
错误的代码):
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define maxn 5005
#define max(a, b) a > b ? a : b
int n, m, ans = 0;
int s[maxn + 1][maxn + 1];
signed main() {
scanf("%lld%lld", &n, &m);
for (int i = 1; i <= n; i++) {
int x, y, v;
scanf("%lld%lld%lld", &x, &y, &v);
s[x + 1][y + 1] += v;
}
for (int i = 2; i <= maxn; i++) s[1][i] += s[1][i - 1], s[i][1] += s[i - 1][1];
for (int i = 2; i <= maxn; i++)
for (int j = 2; j <= maxn; j++) s[i][j] += s[i][j - 1] + s[i - 1][j] - s[i - 1][j - 1];
for (int i = maxn; i >= m; i--)
for (int j = maxn; j >= m; j--)
ans = max(ans, s[i][j] - s[i][j - m] - s[i - m][j] + s[i - m][j - m]);
cout << ans << endl;
return 0;
}