二位前缀和做法,WA了1,6,8
点一:
我的输出:40 10
ans: 38 10
code:
#include<bits/stdc++.h>
using namespace std;
const int N=5e3+105;
int n,r,q[N][N],ans=-214748364;
inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*f;
}
int cnt,ANS;
int main(){
r=read();r=r*2+1;
n=read();
for(int i=1,x,y,z;i<=n;i++){
x=read();y=read();z=read();
q[x+1][y+1]+=z;
}
for(int i=1;i<=5001;i++)
for(int j=1;j<=5001;j++)
q[i][j]=q[i-1][j]+q[i][j-1]-q[i-1][j-1]+q[i][j];
for(int i=0;i<=5001-r;i++)
for(int j=0;j<=5001-r;j++){
if(ans<q[i+r][j+r]-q[i+r][j]-q[i][j+r]+q[i][j])
ans=q[i+r][j+r]-q[i+r][j]-q[i][j+r]+q[i][j],cnt=1;
else if(ans==q[i+r][j+r]-q[i+r][j]-q[i][j+r]+q[i][j])cnt++;
}
printf("%d %d",cnt,ans);
return 0;
}