This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#ifdef BLAT
#include "debug/debug.hpp"
#else
#define debug(x...)
#endif
using namespace std;
void nextValue(int &last, int coef, const vector <bool> &visited) {
while (visited[last] == true)
last += coef;
}
void insertValue(int value, int &l, int &r, vector <int> &v, vector <bool> &visited) {
v.push_back(value);
visited[value] = true;
nextValue(l, 1, visited);
nextValue(r, -1, visited);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector <int> a, b(n);
vector <bool> visited(2 * n);
cin >> b[0];
a.push_back(b[0]);
visited[b[0]] = true;
int l = 1, r = 2 * n - 1;
for (int i = 1; i < n; i++) {
cin >> b[i];
nextValue(l, 1, visited);
nextValue(r, -1, visited);
if (b[i] == b[i - 1]) {
insertValue(l, l, r, a, visited);
insertValue(r, l, r, a, visited);
} else if (b[i] > b[i - 1]) {
if (visited[b[i]] == false) {
insertValue(b[i], l, r, a, visited);
insertValue(r, l, r, a, visited);
} else {
insertValue(r, l, r, a, visited);
insertValue(r, l, r, a, visited);
}
} else {
if (visited[b[i]] == false) {
insertValue(b[i], l, r, a, visited);
insertValue(l, l, r, a, visited);
} else {
insertValue(l, l, r, a, visited);
insertValue(l, l, r, a, visited);
}
}
}
for (auto it : a)
cout << it << ' ';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |