Submission #1245516

#TimeUsernameProblemLanguageResultExecution timeMemory
1245516abdelhakimBuilding Skyscrapers (CEOI19_skyscrapers)C++20
0 / 100
3594 ms10040 KiB
#include <bits/stdc++.h> #define ll long long #define inf (ll)(1e15) #define mod (ll)1e9+7 #define dbg(x) cerr <<#x << ' ' << x <<endl; using namespace std; void printvec(vector<ll>& v) { for (auto &&i : v) { cout <<i<<' '; } cout << endl; } map<pair<ll,ll>,bool> vis; map<pair<ll,ll>,ll> ra9m; bool good(pair<ll,ll> cell) { vector<ll> pr={-1,1}; for (int i=0;i<2;i++) { for (int j=0;j<2;j++) { ll v1=pr[i]; ll v2=pr[j]; if(vis[{cell.first+v1,cell.second+v2}]) { return true; } } } return false; } int main() { ios::sync_with_stdio(0); cin.tie(0); ll n; cin>>n; ll t; cin>>t; set<pair<ll,ll>> st; for (int i=0;i<n;i++) { ll c, r; cin>>c>>r; st.insert({c,r}); ra9m[{c,r}]=i+1; } vis[*st.begin()]=1; vector<ll> s; s.push_back(ra9m[*st.begin()]); st.erase(st.begin()); bool possible=true; while(!st.empty()) { bool did=false; for (auto &&e : st) { if(good(e)) { did=true; vis[e]=1; st.erase(e); s.push_back(ra9m[e]); break; } } if(!did) { possible=false; break; } } if(!possible) { cout << "NO" << endl; } else { for (int i=0;i<n;i++) { cout << s[i]<<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...