CCF真题 回收站选址
题目链接
测试样例
7
0 0
0 1
1 0
1 1
1 2
2 0
2 1
2
0 0
-100000 10
11
9 10
10 10
11 10
12 10
13 10
11 9
11 8
12 9
10 9
10 11
12 11
解决方案
#include<iostream>
using namespace std;
#include<vector>
typedef struct point
{
int x;
int y;
}Point;
int main()
{
int n;
cin>>n;
vector<Point> vec(n);
int cnta=0,cntb=0,cntc=0,cntd=0,cnte=0;
for(int i=0;i<n;i++)
{
int a,b;
cin>>a>>b;
vec[i].x=a;
vec[i].y=b;
}
int judge[n]={0};
for(int i=0;i<n;i++)
{
int a,b;
a=vec[i].x;
b=vec[i].y;
int c=0;
for(int j=0;j<n;j++)
{
if(a==vec[j].x)
{
if(b==vec[j].y+1) c++;
if(b==vec[j].y-1) c++;
}
if(b==vec[j].y)
{
if(vec[j].x+1==a) c++;
if(vec[j].x-1==a) c++;
}
}
if(c==4) judge[i]=1;
}
for(int i=0;i<n;i++)
{
int a=vec[i].x;
int b=vec[i].y;
if(judge[i]==1)
{
int c=0;
for(int j=0;j<n;j++)
{
if(vec[j].x==a+1 && vec[j].y==b+1) c++;
if(vec[j].x==a+1 && vec[j].y==b-1) c++;
if(vec[j].x==a-1 && vec[j].y==b+1) c++;
if(vec[j].x==a-1 && vec[j].y==b-1) c++;
}
switch(c)
{
case 0:
cnta++;break;
case 1:
cntb++;break;
case 2:
cntc++;break;
case 3:
cntd++;break;
case 4:
cnte++;break;
}
}
}
cout<<cnta<<endl<<cntb<<endl<<cntc<<endl<<cntd<<endl<<cnte;
return 0;
}