제출 #1232634

#제출 시각아이디문제언어결과실행 시간메모리
1232634rhm_ganXylophone (JOI18_xylophone)C++20
0 / 100
1 ms408 KiB
#include <bits/stdc++.h> #include "xylophone.h" using namespace std; void solve(int N) { vector<int> res(N + 1); int l = 1, r = N; while (query(l, r - 1) == N - 1) r--; while (query(l + 1, r) == N - 1) l++; res[l] = 1; res[r] = N; int mx = 0, id = 0, k = 1e9; for (int i = r + 1; i <= N; i++) { int x = query(r, i); if (x == mx) { int y = query(id, i); res[i] = k + y; } else { res[i] = N - x; mx = max(mx, x); } if (res[i] < k) { k = res[i]; id = i; } } mx = id = k = 0; for (int i = l - 1; i >= 1; i--) { int x = query(i, l); if (x == mx) { int y = query(i, id); res[i] = k - y; } else { res[i] = x + 1; mx = max(mx, x); } if (res[i] > k) { k = res[i]; id = i; } } mx = id = k = 0; for (int i = l + 1; i < r; i++) { int x = query(l, i); if (x == mx) { int y = query(id, i); res[i] = k - y; } else { res[i] = x + 1; mx = max(mx, x); } if (res[i] > k) { k = res[i]; id = i; } } for (int i = 1; i <= N; i++) { answer(i, res[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...