#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
#define fi first
#define se second
const int MAXN = 1e5 + 10;
const int INF = 1e18+10;
vector<int> g[9], val[9];
pair<int,int> sh[9];
int cl=0,cr=0,cll=0,crr=0;
void update(int tp, int delta = 1) {
if (sh[tp].fi == 0) cl+=delta;
else if(sh[tp].fi == 1) cll+=delta;
if (sh[tp].se == 0) cr+=delta;
else if (sh[tp].se==1) crr+=delta;
}
bool dfs(int u, vector<int> &path) {
int bv=0;
update(u,-1);
path.pb(val[u].back());
val[u].pop_back();
if (u>=7) return 1;
rep(v,1,8) {
if(sh[u].se == sh[v].fi || sh[v].fi == -1 || val[v].empty()) continue;
update(v,-1);
if(cl+cll+cr+crr >= 2 && ((sh[v].se==0 && cll==0) || (sh[v].se == 1 && cl == 0))) {
update(v,1);
continue;
}
update(v,1);
if (val[bv].back() > val[v].back()) bv = v;
}
if (bv == 0) return 0;
return dfs(bv,path);
}
int32_t main(){
ios::sync_with_stdio(0);cin.tie(0);
int n;cin >> n;
rep(i,1,8) {
sh[i].fi = ((i-1)>>1)&1;
sh[i].se = (i-1)&1;
}
sh[5].fi = sh[6].fi = -1;
sh[7].se = sh[8].se = -1;
sh[7].fi = 0;
val[0].pb(INF);
int st;
rep(i,1,n) {
int tp, v;cin >> tp >> v;
val[tp].pb(v + (tp >= 7 ? (int)1e9 : 0));
if (tp==5 || tp == 6) st = tp;
if (tp > 6) continue;
update(tp);
}
rep(i,1,8) sort(val[i].begin(), val[i].end(), greater<int>());
vector<int> ans;
if(!dfs(st, ans)) {
cout << "-1\n";
return 0;
}
for (int &v : ans) cout << v%((int)1e9) << ' ';
cout << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |