Submission #1030551

#TimeUsernameProblemLanguageResultExecution timeMemory
1030551racsosabemedians (balkan11_medians)C++14
100 / 100
17 ms2908 KiB
#include <bits/stdc++.h> using namespace std; const int N = 2 * 100000 + 5; int n; int a[N]; int b[N]; bool vis[N]; void solve() { a[1] = b[1]; vis[b[1]] = true; int L = 1, R = 2 * n - 1; for(int i = 2; i <= n; i++) { int l = 2 * i - 2; int r = 2 * i - 1; if(b[i - 1] == b[i]) { while(vis[L]) L += 1; a[l] = L; vis[L] = true; while(vis[R]) R -= 1; a[r] = R; vis[R] = true; } else if(b[i - 1] > b[i]) { if(not vis[b[i]]) { a[l] = b[i]; vis[b[i]] = true; while(vis[L]) L += 1; a[r] = L; vis[L] = true; } else { while(vis[L]) L += 1; a[l] = L; vis[L] = true; while(vis[L]) L += 1; a[r] = L; vis[L] = true; } } else { if(not vis[b[i]]) { a[l] = b[i]; vis[b[i]] = true; while(vis[R]) R -= 1; a[r] = R; vis[R] = true; } else { while(vis[R]) R -= 1; a[l] = R; vis[R] = true; while(vis[R]) R -= 1; a[r] = R; vis[R] = true; } } } for(int i = 1; i <= 2 * n - 1; i++) { assert(vis[i]); } } int main() { cin.tie(0) -> sync_with_stdio(false); cin >> n; for(int i = 1; i <= n; i++) cin >> b[i]; solve(); for(int i = 1; i <= 2 * n - 1; i++) cout << a[i] << " \n"[i == 2 * n - 1]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...