Submission #1255371

#TimeUsernameProblemLanguageResultExecution timeMemory
1255371Matjaz중앙값 배열 (balkan11_medians)C++20
100 / 100
29 ms2888 KiB
#include<iostream> #include <vector> using namespace std; int main(){ int N; cin >> N; vector<int> B(N); vector<bool> available(2 * N -1, true); int first = 0; int last = 2 * N - 2; for (int i=0;i<N;i++) cin >> B[i]; vector<int> A(2*N - 1); A[0] = B[0]; available[B[0] - 1] = false; for (int i=1;i<N;i++){ if (B[i] == B[i - 1]){ while (!available[first]) first++; while (!available[last]) last--; A[2 * i - 1] = first + 1; A[2 * i] = last + 1; available[last] = false; available[first] = false; } if (B[i] > B[i - 1]){ if (available[B[i] - 1]) { A[2 * i - 1] = B[i]; available[B[i] - 1] = false; } else { while (!available[last]) last--; A[2 * i - 1] = last + 1; available[last] = false; } while (!available[last]) last--; A[2 * i] = last + 1; available[last] = false; } if (B[i] < B[i - 1]){ if (available[B[i] - 1]) { A[2 * i - 1] = B[i]; available[B[i] - 1] = false; } else { while (!available[first]) first++; A[2 * i - 1] = first + 1; available[first] = false; } while (!available[first]) first++; A[2 * i] = first + 1; available[first] = false; } } for (int i=0;i<A.size();i++) cout << A[i] << " "; cout << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...