Submission #346401

#TimeUsernameProblemLanguageResultExecution timeMemory
346401dooweyBuilding Skyscrapers (CEOI19_skyscrapers)C++14
54 / 100
359 ms22260 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; #define fi first #define se second #define mp make_pair #define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N = 151111; int dir[8][2] = {{-1,-1},{-1,0},{-1,+1},{0,-1},{0,+1},{1,-1},{1,0},{1,+1}}; map<pii,int> indx; set<pii> unused; set<pii> can; vector<pii> ord; void add_cell(pii xx){ pii nx; for(int v = 0;v < 8 ; v ++ ){ nx = mp(xx.fi+dir[v][0],xx.se+dir[v][1]); if(unused.count(nx)){ unused.erase(nx); can.insert(nx); } } } int main(){ fastIO; int n; cin >> n; int typ; cin >> typ; pii cc; pii root; for(int i = 1; i <= n; i ++ ){ cin >> cc.fi >> cc.se; indx[cc]=i; if(i>1){ unused.insert(cc); } else{ root = cc; } } add_cell(root); ord.push_back(root); pii gg; while(!can.empty()){ gg = *can.begin(); can.erase(can.begin()); ord.push_back(gg); add_cell(gg); } if(!unused.empty()){ cout << "NO\n"; return 0; } cout << "YES\n"; for(auto x : ord){ cout << indx[x] << " "; } cout << "\n"; 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...