记录编号 |
140570 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2014]无线网路发射器选址 |
最终得分 |
100 |
用户昵称 |
奶猹 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.045 s |
提交时间 |
2014-11-22 19:14:44 |
内存使用 |
0.38 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<climits>
#include<cstdlib>
#include<algorithm>
#include<ctime>
#include<map>
using namespace std;
int n,d;
int a[130][130];
map <int ,int > num;
int ans=0;
void init();
void work();
void outit();
void find(int ,int );
int ret;
char ch;
int qread()
{
ret=0;
while(ch=getchar(),!isdigit(ch));
while(ret=ret*10+ch-'0',ch=getchar(),isdigit(ch));
return ret;
}
int main()
{
freopen("wireless.in","r",stdin);
freopen("wireless.out","w",stdout);
init();
work();
outit();
fclose(stdin);
fclose(stdout);
return 0;
}
void init()
{
d=qread();
n=qread();
int x,y,z;
for(int i=1;i<=n;i++)
{
x=qread();
y=qread();
z=qread();
a[x][y]=z;
}
}
void work()
{
for(int i=0;i<=128;i++)
for(int j=0;j<=128;j++)
find(i,j);
}
void outit()
{
printf("%d %d\n",num[ans],ans);
}
void find(int x,int y)
{
int lx=x-d,ly=y-d,rx=x+d,ry=y+d;
if(lx<0)lx=0;
if(ly<0)ly=0;
if(rx>128)rx=128;
if(ry>128)ry=128;
int sum=0;
for(int i=lx;i<=rx;i++)
for(int j=ly;j<=ry;j++)
sum+=a[i][j];
num[sum]++;
if(sum>=ans)
ans=sum;
}