Submission #564444

#TimeUsernameProblemLanguageResultExecution timeMemory
5644441zaid1Building Skyscrapers (CEOI19_skyscrapers)C++17
0 / 100
662 ms952708 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define int long long typedef long long ll; const int M = 2e7 + 5, MOD = 1e9+7; int grid[3000][3000], vis[M], cnt; vector<int> node[M]; vector<int> ans; void dfs(int s) { ans.push_back(s); vis[s] = true; cnt++; for (int i:node[s]) { if (!vis[i]) dfs(i); } } signed main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); srand(time(0)); int n, t; cin >> n >> t; vector<pair<int, int>> v(n); for (auto&[a, b]:v) { cin >> a >> b; a += 1000; b += 1000; } for (int i = 0; i < n; i++) { grid[v[i].first][v[i].second] = i+1; } int ind = 1; for (auto[a, b]:v) { for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { if (!i && !j) continue; if (grid[a+i][b+j]) node[ind].push_back(grid[a+i][b+j]); } } ind++; } for (int i = 1; i <= n; i++) { sort(node[i].rbegin(), node[i].rend()); } dfs(n); reverse(ans.begin(), ans.end()); if (cnt == n) { cout << "YES" << endl; for (int i:ans) cout << i << endl; } else cout << "NO" << endl; return 0; } /* 3 2 1 2 0 0 3 1 2 1 1 2 2 4 1 1 1 4 */
#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...