cpp
复制代码
typedef long long LL;
const int N = 5010;
int n, m;
LL a[N][N], st[N][N];
int main()
{
cin >> n >> m;
while(n--)
{
int x, y, v; cin >> x >> y >> v;
a[++x][++y] += v;
}
n = 5001;
// 前缀和数组
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
st[i][j] = st[i-1][j] + st[i][j-1] - st[i-1][j-1] + a[i][j];
}
}
// 枚举炸弹的位置
LL ret = 0;
m = min(m, n);
for (int x2 = m; x2 <= n; x2++)
{
for (int y2 = m; y2 <= n; y2++)
{
int x1 = x2 - m + 1, y1 = y2 - m + 1;
LL tmp = st[x2][y2] - st[x1-1][y2] - st[x2][y1-1] + st[x1-1][y1-1];
ret = max(ret, tmp);
}
}
cout << ret << endl;
return 0;
}