제출 #660786

#제출 시각아이디문제언어결과실행 시간메모리
660786600Mihnea중앙값 배열 (balkan11_medians)C++17
100 / 100
84 ms12748 KiB
bool home = 0; #include <bits/stdc++.h> using namespace std; const int N = 200000 + 7; int n; int b[N]; int a[N]; set<int> s; int nxt_up(int i) { auto it = s.lower_bound(i); assert(it != s.end()); int sol = *it; s.erase(it); return sol; } int nxt_down(int i) { auto it = s.lower_bound(i + 1); assert(it != s.begin()); it--; int sol = *it; s.erase(it); return sol; } int main() { if (home == 0) { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); } else { freopen ("input.txt", "r", stdin); } cin >> n; for (int i = 1; i <= 2 * n - 1; i++) { s.insert(i); } for (int i = 1; i <= n; i++) { cin >> b[i]; } a[1] = nxt_up(b[1]); for (int i = 2; i <= n; i++) { if (b[i] == b[i - 1]) { a[2 * i - 2] = nxt_up(1); a[2 * i - 1] = nxt_down(2 * n - 1); continue; } if (b[i] < b[i - 1]) { if (s.count(b[i])) { a[2 * i - 2] = nxt_up(b[i]); a[2 * i - 1] = nxt_up(1); } else { a[2 * i - 2] = nxt_up(1); a[2 * i - 1] = nxt_up(1); } continue; } if (b[i] > b[i - 1]) { if (s.count(b[i])) { a[2 * i - 2] = nxt_down(b[i]); a[2 * i - 1] = nxt_down(2 * n - 1); } else { a[2 * i - 2] = nxt_down(2 * n - 1); a[2 * i - 1] = nxt_down(2 * n - 1); } continue; } assert(0); } for (int i = 1; i <= 2 * n - 1; i++) { cout << a[i] << " "; } cout << "\n"; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

medians.cpp: In function 'int main()':
medians.cpp:40:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |     freopen ("input.txt", "r", stdin);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...