一定要注意xx,yy初始化的值,要是r

#include<bits/stdc++.h>
using namespace std;
int n,r;
const int M=5005;
int a[M][M];

int main(){
    cin>>n>>r;
    int xx=r;
    int yy=r;
    for(int i=1;i<=n;i++){
        int x,y,v;
        cin>>x>>y>>v;
        x++; y++;
        
        a[x][y]=v;
        xx=max(xx,x);
        yy=max(yy,y);
    }
    //求前缀和
   // cout<<xx<<" "<<yy<<endl;
    for(int i=1;i<=xx;i++){
        for(int j=1;j<=yy;j++){
            a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+a[i][j];
        }
    }
    //搜索每一个正方形,求取区间和
    int ans=0;
    for(int i=r;i<=xx;i++){
        for(int j=r;j<=yy;j++){
            ans=max(ans,a[i][j]-a[i-r][j]-a[i][j-r]+a[i-r][j-r]);
        }
    }
    cout<<ans<<endl;
    return 0;
}