Submission #934737

#TimeUsernameProblemLanguageResultExecution timeMemory
934737AlebnBuilding Skyscrapers (CEOI19_skyscrapers)C++14
0 / 100
180 ms21664 KiB
#include <bits/stdc++.h> using namespace std; struct Cord { int x, y; Cord(){} Cord(int xi, int yi):x(xi),y(yi){} }; bool operator<(const Cord a, const Cord b) { if(a.x == b.x) return a.y < b.y; return a.x < b.x; } vector<Cord> dir = { Cord(-1, -1), Cord(-1, 0), Cord(-1, 1), Cord(0, 1), Cord(1, 1), Cord(1, 0), Cord(1, -1), Cord(0, -1), }; map<Cord, int> graph, visited, indx; vector<int> res; void dfs(Cord i) { visited[i] = 1; res.push_back(indx[i]); for(auto j : dir) { Cord next(i.x + j.x, i.y + j.y); if(graph[next] && !visited[next]) dfs(next); } } int main() { int n, t; cin >> n >> t; vector<Cord> a(n); for(int i = 0; i < n; i++) { cin >> a[i].x >> a[i].y; graph[a[i]] = 1; indx[a[i]] = i; } // Cord start = a[0]; for(auto i : a) { if(i.x < start.x || i.y < start.y) start = i; } // dfs(start); bool ok = true; for(int i = 0; i < n; i++) { if(!visited[a[i]]) { ok = false; break; } } if(ok) { cout << "YES\n"; for(auto i : res) cout << i + 1 << "\n"; cout << "\n"; } else cout << "NO\n"; }
#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...