Submission #645747

#TimeUsernameProblemLanguageResultExecution timeMemory
645747tvladm2009medians (balkan11_medians)C++14
15 / 100
81 ms12296 KiB
#include <bits/stdc++.h> using ll = long long; int const nmax = 100000; int a[1 + nmax], b[1 + 2 * nmax]; bool fr[1 + nmax]; std::set<int> s; int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); int n; std::cin >> n; for(int i = 1;i <= n; i++) { std::cin >> a[i]; } for(int i = 1;i < 2 * n; i++) s.insert(i); b[1] = a[1]; fr[a[1]] = 1; s.erase(a[1]); for(int i = 2;i <= n; i++) { if(a[i - 1] < a[i]) { auto it = s.end(); it--; b[2 * i - 1] = *it; s.erase(b[2 * i - 1]); if(fr[a[i]]) { it = s.end(); it--; b[2 * i - 2] = *it; } else { b[2 * i - 2] = a[i]; } s.erase(b[2 * i - 2]); fr[b[2 * i - 1]] = true; fr[b[2 * i - 2]] = true; } else if(a[i] == a[i - 1]) { auto it = s.end(); b[2 * i - 1] = *s.begin(); b[2 * i - 2] = *it; s.erase(b[2 * i - 1]); s.erase(b[2 * i - 2]); fr[b[2 * i - 1]] = true; fr[b[2 * i - 2]] = true; } else { auto it = s.begin(); b[2 * i - 1] = *it; it++; if(fr[a[i]]) b[2 * i - 2] = *it; else b[2 * i - 2] = a[i]; s.erase(b[2 * i - 1]); s.erase(b[2 * i - 2]); fr[b[2 * i - 1]] = 1; fr[b[2 * i - 2]] = 1; } } for(int i = 1;i <= 2 * n - 1; i++) std::cout << b[i] << " "; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...