比赛 202103省实验桐柏一中普及组联赛 评测结果 RRRRRRRRRR
题目名称 知己知彼,百战不殆 最终得分 0
用户昵称 今天作业写了没 运行时间 0.159 s
代码语言 C++ 内存使用 14.13 MiB
提交时间 2021-03-22 20:01:28
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int x,y,m,n,p[1805][1805],mx,a[5],b[5],unad,num;
void add(int x,int y)
{
    if(!p[x][y]) unad++;
    p[x][y]++;
    if(p[x][y]==mx) num++;
    if(p[x][y]>mx) 
    {
        mx++;
        num=1;
    }
}
void scp(int x,int y)
{
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    for(int i=1;i<=2;i++) if(x>i) a[i]=1;
    for(int i=0;i<=1;i++) if(x+i<n) a[3+i]=1;
    for(int i=1;i<=2;i++) if(y>i) b[i]=1;
    for(int i=0;i<=1;i++) if(y+i<n) b[3+i]=1;
//    if(x>1) a[1]=1; -1
//    if(x>2) a[2]=1; -2
//    if(x<n) a[3]=1; +1
//    if(x+1<n) a[4]=1; +2
    if(a[1] && b[2]) add(x-1,y-2);//1
    if(a[3] && b[2]) add(x+1,y-2);//2
    if(a[4] && b[1]) add(x+2,y-1);//3
    if(a[4] && b[3]) add(x+2,y+1);//4
    if(a[3] && b[4]) add(x+1,y+2);//5
    if(a[1] && b[4]) add(x-1,y+2);//6
    if(a[2] && b[3]) add(x-2,y+1);//7
    if(a[2] && b[1]) add(x-2,y-1);//8
    add(x,y);//self
}
int main()
{
    freopen("safenum.in","r",stdin);
    freopen("safenum.out","r",stdout);
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
        scanf("%d%d",&x,&y);
        scp(x,y);
    }
    cout<<n*n-unad<<endl<<mx<<" "<<num;
}