Advertisement
pratiyush7

Untitled

Mar 23rd, 2022
1,099
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5.     int tt;
  6.     cin >> tt;
  7.     while (tt--) {
  8.         int n;
  9.         cin >> n;
  10.         vector<int> b(n);
  11.         for (int i = 0; i < n; i++) {
  12.             cin >> b[i];
  13.         }
  14.         if (b[0] == -1) {
  15.             b[0] = 0;
  16.         }
  17.         bool fail = false;
  18.         for (int i = 0; i < n - 1; i++) {
  19.             if (b[i + 1] == -1) {
  20.                 b[i + 1] = b[i];
  21.             }
  22.             if (b[i + 1] < b[i] || b[i] > i + 1) {
  23.                 fail = true;
  24.                 break;
  25.             }
  26.         }
  27.         if (fail) {
  28.             cout << -1 << endl;
  29.             continue;
  30.         }
  31.         set<int> st;
  32.         for (int i = 0; i < b[n - 1]; i++) {
  33.             st.emplace(i);
  34.         }
  35.         for (int i = 0; i < n; i++) {
  36.             st.emplace(b[n - 1] + 1 + i);
  37.         }
  38.         vector<int> a(n, -1);
  39.         int last = 0;
  40.         for (int i = 0; i < n; i++) {
  41.             if (b[i] > last) {
  42.                 a[i] = last;
  43.                 st.erase(last);
  44.                 last = b[i];
  45.             }
  46.         }
  47.         for (int i = 0; i < n; i++) {
  48.             if (a[i] == -1) {
  49.                 a[i] = *st.begin();
  50.                 st.erase(st.begin());
  51.             }
  52.         }
  53.         for (int i = 0; i < n; i++) {
  54.             if (i > 0) {
  55.                 cout << " ";
  56.             }
  57.             cout << a[i];
  58.         }
  59.         cout << endl;
  60.     }
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement