试题编号: | 201912-2 |
试题名称: | 回收站选址 |
时间限制: | 1.0s |
内存限制: | 512.0MB |
水题,仅作记录
思路:multimap
#include <map>
#include <iostream>
using namespace std;
multimap<int, int> map_input;
int n, res[5] = { 0 };
bool check_exist(int x, int y) {
for (auto item : map_input) {
if (item.first == x) {
if (item.second == y) {
return true;
}
}
}
return false;
}
int main() {
int x, y, points, step_1[4][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} }, step_2[4][2] = { {-1, 1}, {1, 1}, {-1, -1}, {1, -1} };
bool is_valid = true;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x >> y;
map_input.insert(make_pair(x, y));
}
for (auto item : map_input) {
is_valid = true;
points = 0;
for (int i = 0; i < 4; i++) {
if (!check_exist(item.first + step_1[i][0], item.second + step_1[i][1])) {
is_valid = false;
break;
}
}
if (is_valid) {
for (int i = 0; i < 4; i++) {
if (check_exist(item.first + step_2[i][0], item.second + step_2[i][1])) {
points++;
}
}
res[points]++;
}
}
for (auto item : res) {
cout << item << endl;
}
return 0;
}