이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "park.h"
#include <bits/stdc++.h>
using namespace std;
static int Place[1400];
void Detect(int T, int N) {
if (T == 1) {
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) {
Place[i] = 1;
Place[j] = 1;
if (Ask(i, j, Place)) {
Answer(i, j);
}
Place[i] = 0;
Place[j] = 0;
}
}
} else if (T == 2) {
mt19937 rnd(12345);
function<void(int, int, vector<int>)> Solve = [&](int l, int r, vector<int> cand) {
if (cand.empty()) {
return Answer(min(l, r), max(l, r));
}
memset(Place, 0, sizeof(Place));
int m = cand[rnd() % cand.size()];
for (auto i : cand) {
Place[i] = 1;
}
Place[l] = Place[r] = 1;
vector<int> lf, rg;
for (auto i : cand) if (i != m) {
Place[i] = 0;
if (Ask(l, m, Place)) {
rg.emplace_back(i);
} else {
lf.emplace_back(i);
}
Place[i] = 1;
}
Solve(m, r, rg);
Solve(l, m, lf);
};
vector<int> cand;
for (int i = 1; i + 1 < N; i++) {
cand.emplace_back(i);
}
Solve(0, N - 1, cand);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |