#include "bits/stdc++.h"
#include "library.h"
using namespace std;
using ll = long long;
using ld = long double;
using ull = unsigned long long;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
// https://codeforces.com/blog/entry/79148
class Timer: chrono::high_resolution_clock {
const time_point start_time;
public:
Timer(): start_time(now()) {}
rep elapsed_time() const {
return chrono::duration_cast<chrono::milliseconds>(now() - start_time).count();
}
} timer;
void Solve(int n) {
vector<bool> vis(n + 1, 0);
deque<int> ans(1, 1);
auto ask = [&] (int l, int r, int x) {
int cnt = 0;
vector<int> m(n, 0);
for (int i = l; i <= r; i++) {
if (!vis[i]) {
m[i - 1] = 1;
cnt++;
}
}
if (!cnt) {
return false;
}
int res = Query(m);
m[x - 1] = 1;
return Query(m) <= res;
};
vis[1] = 1;
int lb = 1, rb = 1, rem = n - 1;
auto find_m = [&] (int l, int r, int cur) {
int cnt = 0;
for (int i = l; i <= r; i++) {
if (!vis[i]) {
cnt++;
if (cnt == cur) {
return i;
}
}
}
};
while (true) {
int l = 1, r = n, cur = rem;
while (cur > 3) {
int m = find_m(l, r, cur / 2);
if (ask(m, r, rb)) {
l = m;
cur = cur - cur / 2 + 1;
}
else {
r = m;
cur = cur / 2;
}
}
int res = -1;
for (int i = l; i <= r; i++) {
if (!vis[i] && ask(i, i, rb)) {
res = i;
break;
}
}
if (res == -1) {
break;
}
vis[res] = 1;
ans.push_back(res);
rb = res;
rem--;
}
while (true) {
if (ans.size() == n) {
break;
}
int l = 1, r = n, cur = rem;
while (cur > 3) {
int m = find_m(l, r, cur / 2);
if (ask(m, r, lb)) {
l = m;
cur = cur - cur / 2 + 1;
}
else {
r = m;
cur = cur / 2;
}
}
int res;
for (int i = l; i <= r; i++) {
if (!vis[i] && ask(i, i, lb)) {
res = i;
break;
}
}
vis[res] = 1;
ans.push_front(res);
lb = res;
rem--;
}
vector<int> ret;
for (auto &x : ans) {
ret.push_back(x);
}
Answer(ret);
}
컴파일 시 표준 에러 (stderr) 메시지
library.cpp: In lambda function:
library.cpp:51:9: warning: control reaches end of non-void function [-Wreturn-type]
51 | };
| ^| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |