注意坐标范围最小可以是0,做前缀和的时候要处理一下
#include<bits/stdc++.h>
#define LL long long
#define x first
#define y second
#define de(x) cout<<#x<<" = "<<x<<" "
#define deg(x) cout<<#x<<" = "<<x<<endl
using namespace std;
const int N=5e3+10;
int s[N][N];
typedef pair<int,int> PII;
int qy(int x1,int y1,int x2,int y2)
{
return s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,r;
cin>>n>>r;
for(int i=1;i<=n;i++)
{
int x,y,d;
cin>>x>>y>>d;
s[x+1][y+1]+=d;
}
for(int i=1;i<=N-1;i++)
for(int j=1;j<=N-1;j++)
s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
int res=0;
for(int i=1;i<=N-1;i++)
for(int j=1;j<=N-1;j++)
{
int x2=i,y2=j;
int x1=max(x2-r+1,1),y1=max(y2-r+1,1);
res=max(res,qy(x1,y1,x2,y2));
}
cout<<res<<endl;
return 0;
}