Codeforces Round #623 (Div. 2) C. Restoring Permutation(二分)
题目链接:https://codeforces.com/contest/1315/problem/C
#include <bits/stdc++.h> using namespace std; const int M = 220; int n, a[M], num[M]; void solve() { cin >> n; set<int> st (num + 1, num + 1 + 2 * n); for (int i = 1; i <= 2 * n; i += 2) { cin >> a[i]; st.erase(a[i]); } for (int i = 2; i <= 2 * n; i += 2) { auto it = st.upper_bound(a[i - 1]); if (it == st.end()) { cout << "-1" << "\n"; return; } a[i] = *it; st.erase(it); } for (int i = 1; i <= 2 * n; i++) { cout << a[i] << " \n"[i == 2 * n]; } } int main() { for (int i = 0; i < M; i++) num[i] = i; int t; cin >> t; while (t--) solve(); }