Submission #703098

#TimeUsernameProblemLanguageResultExecution timeMemory
703098CyanmondBuilding Skyscrapers (CEOI19_skyscrapers)C++17
8 / 100
184 ms8428 KiB
#include <bits/stdc++.h> struct Point { int r, c; }; auto compPoint = [](Point a, Point b) { return std::make_pair(a.r, a.c) < std::make_pair(b.r, b.c); }; std::pair<int, int> dxy[8] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}}; int main() { int N, T; std::cin >> N >> T; std::vector<Point> sks(N); for (auto &[r, c] : sks) { std::cin >> r >> c; } std::map<Point, int, decltype(compPoint)> skMap(compPoint); for (int i = 0; i < N; ++i) { skMap[sks[i]] = i; } std::vector<int> dist(N, -1); dist[0] = 0; std::queue<int> que; que.push(0); while (not que.empty()) { const auto f = que.front(); que.pop(); const auto &[r, c] = sks[f]; for (const auto &[ar, ac] : dxy) { const int nr = r + ar, nc = c + ac; auto itr = skMap.find({nr, nc}); if (itr == skMap.end()) { continue; } const int t = itr->second; if (dist[t] != -1) { continue; } dist[t] = dist[f] + 1; que.push(t); } } if (std::any_of(dist.begin(), dist.end(), [&](int x) { return x == -1; })) { std::cout << "NO" << std::endl; return 0; } std::cout << "YES" << std::endl; std::vector<std::vector<int>> distList(N); for (int i = 0; i < N; ++i) { distList[dist[i]].push_back(i); } for (const auto &vec : distList) { for (const auto e : vec) { std::cout << e + 1 << std::endl; } } }
#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...