Submission #359296

#TimeUsernameProblemLanguageResultExecution timeMemory
359296jesus_coconutBuilding Skyscrapers (CEOI19_skyscrapers)C++17
8 / 100
48 ms4992 KiB
#include <bits/stdc++.h>

using namespace std;
int n, t;
map<pair<int, int>, int> mp;

void read() {
	cin >> n;
	cin >> t;
	for (int i = 0; i < n; ++i) {
		int a, b;
		cin >> a >> b;
		mp[{a, b}] = i + 1;
	}
}

pair<int, int> dir[8] {
		{-1, -1},
		{-1, 0},
		{-1, 1},
		{0, -1},
		{0, 1},
		{1, -1},
		{1, 0},
		{1, 1}
};

void solve1() {
	int cnt = 0;
	queue<pair<int, int>> q;
	set<pair<int, int>> bio;
	vector<int> ans;
	q.emplace(mp.begin()->first);
	while (!q.empty()) {
		auto p = q.front();
		q.pop();
		++cnt;
		ans.push_back(mp[p]);
		bio.emplace(p);
		for (auto &[dx, dy] : dir) {
			auto np = p;
			np.first += dx;
			np.second += dy;
			if (!bio.count(np) && mp.count(np)) {
				q.emplace(np);
				bio.emplace(np);
			}
		}
	}
	if (cnt != n) cout << "NO\n";
	else {
		cout << "YES\n";
		for (auto a : ans) cout << a << '\n';
	}
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	read();
	if (t == 1) {
		solve1();
	}

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...