Submission #404396

#TimeUsernameProblemLanguageResultExecution timeMemory
404396jenkinsserSlagalica (COCI19_slagalica2)C++17
70 / 70
77 ms8716 KiB
#include <bits/stdc++.h> #define FOR(ii,aa,bb) for(int ii=aa;ii<bb;ii++) #define for0(ii,bb) FOR(ii,0,bb) #define for1(ii,bb) FOR(ii,1,bb+1) #define pb push_back #define ppb pop_back #define mp make_pair #define st first #define nd second #define pii pair<int,int> #define piii pair<int,pii> #define pdi pair<double,int> #define vi vector<int> #define sp " " #define nl "\n" #define all(x) x.begin(),x.end() #define fastio() ios_base::sync_with_stdio(0);cin.tie(0); #define ll long long #define int ll using namespace std; const int N = 1e5+5; const int INF = 1e9+5; const int mod = 1e9+7; int n,cnt[9],tmp[9]; vector<multiset<int>> s(9); signed main(){ fastio() cin >> n; for(int i=1;i<=n;i++){ int t,x; cin >> t >> x; s[t].insert(x); cnt[t]++; } vector<pii> ans; int cur; if(s[5].empty()){ ans.pb({*s[6].begin(),6}); cur=6; } else{ ans.pb({*s[5].begin(),5}); cur=5; } for(int i=2;i<n;i++){ if(cur==1||cur==3||cur==5){ if(s[3].empty()&&s[4].empty()){ break; } if(s[3].empty()){ ans.pb({*s[4].begin(),4}); s[4].erase(s[4].begin()); cur=4; } else if(s[4].empty()){ ans.pb({*s[3].begin(),3}); s[3].erase(s[3].begin()); cur=3; } else{ if(*s[3].begin()<=*s[4].begin()){ ans.pb({*s[3].begin(),3}); s[3].erase(s[3].begin()); cur=3; } else{ ans.pb({*s[4].begin(),4}); s[4].erase(s[4].begin()); cur=4; } } } else{ if(s[1].empty()&&s[2].empty()){ break; } if(s[1].empty()){ ans.pb({*s[2].begin(),2}); s[2].erase(s[2].begin()); cur=2; } else if(s[2].empty()){ ans.pb({*s[1].begin(),1}); s[1].erase(s[1].begin()); cur=1; } else{ if(*s[1].begin()<=*s[2].begin()){ ans.pb({*s[1].begin(),1}); s[1].erase(s[1].begin()); cur=1; } else{ ans.pb({*s[2].begin(),2}); s[2].erase(s[2].begin()); cur=2; } } } } if(s[1].size()||s[4].size()){ cout << -1; return 0; } if(s[8].empty()){ if(cur==2||cur==4||cur==6) ans.pb({*s[7].begin(),7}); else{ cout << -1; return 0; } } else{ if(cur==1||cur==3||cur==5) ans.pb({*s[8].begin(),8}); else{ cout << -1; return 0; } } for(auto e:ans){ tmp[e.nd]++; if(s[2].size()&&tmp[1]==cnt[1]){ while(s[2].size()){ cout << *s[2].begin() << sp; s[2].erase(s[2].begin()); } } if(s[3].size()&&tmp[4]==cnt[4]){ while(s[3].size()){ cout << *s[3].begin() << sp; s[3].erase(s[3].begin()); } } cout << e.st << sp; } }
#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...
#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...