#include "iostream"
#include "vector"
#include "map"
using namespace std;
int calculate(map<int, vector<int>> m, int x, int y)
{
int score1 = 0;
for (int i : m[x - 1])
{
if (i == y - 1 || i == y + 1)
{
score1 += 1;
if (score1 == 2)
{
break;
}
}
}
int score2 = 0;
for (int i : m[x + 1])
{
if (i == y - 1 || i == y + 1)
{
score2 += 1;
if (score2 == 2)
{
break;
}
}
}
return score1 + score2;
}
bool find_y(map<int, vector<int>> m, int x, int y)
{
int cross = 0; // 上下有没有垃圾
for (int i : m[x]) // 找y-1和y+1
{
if (i == y - 1 || i == y + 1)
{
cross += 1;
}
}
if (cross != 2)
{
return false;
}
else
{
return true;
}
}
bool find_x(map<int, vector<int>> m, vector<int> key_x, int x, int y)
{
int cross = 0; // 左右有没有垃圾
for (int i : key_x)
{
if (i == x - 1 || i == x + 1)
{
cross += 1;
}
}
if (cross < 2)
{
return false;
}
else
{
cross = 0;
for(int i:m[x-1])
{
if(i==y)
{
cross += 1;
break;
}
}
for(int i:m[x+1])
{
if(i==y)
{
cross += 1;
break;
}
}
if(cross<2)
{
return false;
}
else
{
return true;
}
}
}
int main(int argc, char const *argv[])
{
map<int, vector<int>> m;
int n, x, y;
cin >> n;
vector<int> score(5, 0);
vector<int> key_x;
for (int i = 0; i < n; i++)
{
cin >> x >> y;
m[x].push_back(y);
}
map<int, vector<int>>::iterator iter;
for (iter = m.begin(); iter != m.end(); iter++)
{
x = iter->first;
key_x.push_back(x);
}
for (int x : key_x)
{
for (int y : m[x])
{
if (find_x(m, key_x, x, y) && find_y(m, x, y))
{
// cout << "score: " << calculate(m, x, y) << endl;
score[calculate(m, x, y)] += 1;
}
}
}
for (int s : score)
{
cout << s << endl;
}
return 0;
}
【CCF计算机资格认证】201912-2回收站选址C++
猜你喜欢
转载自blog.csdn.net/weixin_44936889/article/details/104081439
今日推荐
周排行