Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- int tt;
- cin >> tt;
- while (tt--) {
- int n;
- cin >> n;
- vector<int> b(n);
- for (int i = 0; i < n; i++) {
- cin >> b[i];
- }
- if (b[0] == -1) {
- b[0] = 0;
- }
- bool fail = false;
- for (int i = 0; i < n - 1; i++) {
- if (b[i + 1] == -1) {
- b[i + 1] = b[i];
- }
- if (b[i + 1] < b[i] || b[i] > i + 1) {
- fail = true;
- break;
- }
- }
- if (fail) {
- cout << -1 << endl;
- continue;
- }
- set<int> st;
- for (int i = 0; i < b[n - 1]; i++) {
- st.emplace(i);
- }
- for (int i = 0; i < n; i++) {
- st.emplace(b[n - 1] + 1 + i);
- }
- vector<int> a(n, -1);
- int last = 0;
- for (int i = 0; i < n; i++) {
- if (b[i] > last) {
- a[i] = last;
- st.erase(last);
- last = b[i];
- }
- }
- for (int i = 0; i < n; i++) {
- if (a[i] == -1) {
- a[i] = *st.begin();
- st.erase(st.begin());
- }
- }
- for (int i = 0; i < n; i++) {
- if (i > 0) {
- cout << " ";
- }
- cout << a[i];
- }
- cout << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement