이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;
const int M = 2e5 + 10;
pair<int, int> A[M];
pair<int, int> doAsk(int i) {
if (A[i].first != -1) {
return A[i];
}
vector<int> r = ask(i);
return A[i] = { r[0], r[1] };
}
void search(vector<int> &I, vector<int> &J, int l, int r, int v, int lo, int hi) {
if (lo == hi) {
J.push_back(I[lo]); return;
}
int m = lo + hi >> 1;
auto [vl, vr] = doAsk(I[m]);
int c = 0, off = 0, ll = m, rr = m;
while (vl + vr != v) {
J.push_back(I[m + off]);
c += 1;
if (off <= 0) {
off = -off + 1;
rr = m + off;
}
else {
off = -off;
ll = m + off;
}
if (m + off < lo || m + off > hi) {
return;
}
auto [nl, nr] = doAsk(I[m + off]);
vl = nl; vr = nr;
}
if (off <= 0) {
if (l != vl) search(I, J, l, vr, v, lo, m + off);
if (r + c != vr) search(I, J, vl + c, r, v, m - off + 1, hi);
}
else {
if (l + c != vl) search(I, J, l, vr + c, v, lo, m - off);
if (r != vr) search(I, J, vl, r, v, m + off, hi);
}
}
int find_best(int n) {
for (int i = 0; i < n; i++) {
A[i].first = -1;
}
vector<int> I(n), J;
for (int i = 0; i < n; i++) {
I[i] = i;
}
for (int i = 0; i < 5; i++) {
int x = 0;
for (int j = 0; j < min((int)I.size(), (int)sqrt(I.size()) + 20); j++) {
auto [a, b] = doAsk(I[j]);
x = max(x, a + b);
}
search(I, J, 0, 0, x, 0, (int)I.size() - 1);
I = J; J.clear();
sort(I.begin(), I.end());
}
return I[0];
}
컴파일 시 표준 에러 (stderr) 메시지
prize.cpp: In function 'void search(std::vector<int>&, std::vector<int>&, int, int, int, int, int)':
prize.cpp:19:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
19 | int m = lo + hi >> 1;
| ~~~^~~~
prize.cpp:22:22: warning: variable 'll' set but not used [-Wunused-but-set-variable]
22 | int c = 0, off = 0, ll = m, rr = m;
| ^~
prize.cpp:22:30: warning: variable 'rr' set but not used [-Wunused-but-set-variable]
22 | int c = 0, off = 0, ll = m, rr = m;
| ^~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |