#include <iostream>
#include <vector>
#include <set>
using namespace std;
void solve() {
int n;
if (!(cin >> n)) return;
vector<int> b(n);
set<int> unused;
for (int i = 1; i <= 2 * n - 1; i++) unused.insert(i);
for (int i = 0; i < n; i++) {
cin >> b[i];
unused.erase(b[i]); // Te liczby są zarezerwowane dla tablicy B
}
// Pierwszy element to zawsze pierwsza mediana
cout << b[0] << " ";
for (int i = 1; i < n; i++) {
if (b[i] > b[i - 1]) {
// Mediana rośnie: dodajemy b[i] i największy dostępny "wypełniacz"
int high = *unused.rbegin();
cout << b[i] << " " << high << " ";
unused.erase(high);
} else if (b[i] < b[i - 1]) {
// Mediana maleje: dodajemy b[i] i najmniejszy dostępny "wypełniacz"
int low = *unused.begin();
cout << b[i] << " " << low << " ";
unused.erase(low);
} else {
// Mediana bz: jeden wypełniacz z dołu, jeden z góry
int low = *unused.begin();
int high = *unused.rbegin();
cout << low << " " << high << " ";
unused.erase(low);
unused.erase(high);
}
}
cout << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
solve();
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |