Submission #564463

#TimeUsernameProblemLanguageResultExecution timeMemory
564463DodoBuilding Skyscrapers (CEOI19_skyscrapers)C++14
0 / 100
314 ms33808 KiB
#include <bits/stdc++.h> #define ll long long #define endl '\n' #define pb push_back using namespace std; const ll mx=150005; vector<ll>v[mx]; bool m=false; ll cnt=0; bool visited[mx]; void dfs (ll x) { cnt++; if(m)cout<<x<<endl; visited[x]=1; for(auto u:v[x]) if(visited[u]==0) dfs(u); } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll n,t; cin>>n>>t; vector<pair<ll,ll>>b(n); map<pair<ll,ll>,ll>mp; for(int i=0;i<n;i++) { ll x,y; cin>>x>>y; b[i]={x,y}; mp[{x,y}]=i+1; } ll x[8]={1,1,1,-1,-1,-1,0,0},y[8]={1,-1,0,1,-1,0,1,-1}; ll lmt=1e9; for(int i=0;i<n;i++) { ll f=b[i].first,s=b[i].second; for(int j=0;j<8;j++) { if(f+y[j]>lmt||s+x[j]>lmt)continue; if(mp[{f+y[j],s+x[j]}]>0) { v[mp[{f,s}]].push_back(mp[{f+y[j],s+x[j]}]); } } } dfs(1); if(cnt!=n) { cout<<"NO"<<endl; } else { for(int i=1;i<=n;i++)visited[i]=0; m=true; cout<<"YES"<<endl; dfs(1); } 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...