ccf 201912-2 回收站選址(100分)

 

 

提交後100分的c++程序如下:

#include<bits/stdc++.h>
using namespace std;
int a=0,b=0,c=0,d=0,e=0;
struct point
{
	int x,y;
	point(int x1,int y1)
	{
		x=x1;
		y=y1;
	}
	point()
	{
	}
  bool operator< (const point &s) const
  {
  	if(x==s.x) return y<s.y;
  	return x<s.x;
  }
};
set<point> s;
int m(int x,int y)
{
	 set<point>::iterator it;
	  for(it=s.begin();it!=s.end();it++)
	  {
	  	if((*it).x==x&&(*it).y==y) return 1;
	  	
	  }
	  return 0;
}
int main()
{
   int n;
   cin>>n;
     
   for(int i=1;i<=n;i++)
   {
   
    int x,y;
    cin>>x>>y;
     s.insert(point(x,y));
   }

         set<point>::iterator it;

  for(it=s.begin();it!=s.end();it++)
   {
   
   	 if(m((*it).x-1,(*it).y)==1&&m((*it).x+1,(*it).y)==1&&m((*it).x,(*it).y-1)==1&&m((*it).x,(*it).y+1)==1)
   	 {
   	 	int sum=0;
   	 	if(m((*it).x-1,(*it).y-1)==1) sum++;
   	 	if(m((*it).x-1,(*it).y+1)==1) sum++;
   	 	if(m((*it).x+1,(*it).y+1)==1) sum++;
   	 	if(m((*it).x+1,(*it).y-1)==1) sum++;
   	 	switch(sum)
   	 	{
   	 		case 0: a++;break;
   	 		case 1: b++;break;
   	 		case 2: c++;break;
   	 		case 3: d++;break;
   	 		case 4: e++;break;
			}
   	 	
		}
   }
   cout<<a<<endl;
   cout<<b<<endl;
   cout<<c<<endl;
   cout<<d<<endl;
   cout<<e<<endl;
   
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章