样例输入#1
1
2
4 4 10
6 6 20
样例输出#1
1 30
思路
我认为跟扫雷差不多(不知道为什么他们说跟打砖块很像),就是范围扩大一点,两个for语句搞定,然后边把范围内的数加上公共场所的数量,边判断最多的公共场所数量。
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,maxx,maxn,a[205][205];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y,k;
scanf("%d%d%d",&x,&y,&k);
int l1,l2,r1,r2;
if(x-n<0)l1=0;else l1=x-n;
if(x+n>128)l2=128;else l2=x+n;
if(y-n<0)r1=0;else r1=y-n;
if(y+n>128)r2=128;else r2=y+n;//判断是否超界
for(int l=l1;l<=l2;l++)
for(int r=r1;r<=r2;r++)
{
a[l][r]+=k;
if(a[l][r]>maxx)
{
maxx=a[l][r];
maxn=1;
}
else if(a[l][r]==maxx)maxn++;
}
}
printf("%d %d",maxn,maxx);
return 0;
}