Submission #802880

#TimeUsernameProblemLanguageResultExecution timeMemory
802880Theo830Towers (NOI22_towers)C++17
5 / 100
2065 ms302360 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define f(i,a,b) for(ll i = a;i < b;i++) #define pb push_back #define ii pair<ll,ll> #define iii pair<ll,ii> #define F first #define S second const ll N = 1e6+5; int main(){ set<ii>x[N],y[N]; ll n; cin>>n; ll ans[n] = {0}; set<iii>ek; f(i,0,n){ ll a,b; cin>>a>>b; ek.insert(iii(i,ii(a,b))); x[a].insert(ii(b,i)); y[b].insert(ii(a,i)); } while(!ek.empty()){ auto it = ek.begin(); ll a = (*it).S.F,b = (*it).S.S; if(x[a].size() > 1){ for(auto z:x[a]){ ek.erase(iii(z.S,ii(a,z.F))); y[z.F].erase(ii(a,z.S)); } ii A = (*x[a].begin()),B = (*x[a].rbegin()); ans[A.S] = ans[B.S] = 1; x[a].clear(); y[A.F].insert(ii(a,A.S)); y[B.F].insert(ii(a,B.S)); } else if(y[b].size() > 1){ for(auto z:y[b]){ ek.erase(iii(z.S,ii(z.F,b))); x[z.F].erase(ii(b,z.S)); } ii A = (*y[b].begin()),B = (*y[b].rbegin()); ans[A.S] = ans[B.S] = 1; y[b].clear(); x[A.F].insert(ii(b,A.S)); x[B.F].insert(ii(b,B.S)); } else{ ans[(*it).F] = 1; ek.erase((*it)); } } f(i,0,n){ cout<<ans[i]; } }
#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...