CCF CSP 201912-2 回收站选址【C++11 multimap】

试题编号: 201912-2
试题名称: 回收站选址
时间限制: 1.0s
内存限制: 512.0MB

 

水题,仅作记录

思路:multimap

CCF CSP 201912-2 回收站选址【C++11 multimap】_第1张图片

CCF CSP 201912-2 回收站选址【C++11 multimap】_第2张图片

CCF CSP 201912-2 回收站选址【C++11 multimap】_第3张图片

 

#include 
#include 
using namespace std;

multimap 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;
}

你可能感兴趣的:(CCF CSP 201912-2 回收站选址【C++11 multimap】)