QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#887052 | #10071. Hora | wsyear | Compile Error | / | / | C++20 | 2.4kb | 2025-02-07 14:32:52 | 2025-02-07 14:32:53 |
Judging History
This is the latest submission verdict.
- [2025-02-07 14:32:53]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2025-02-07 14:32:52]
- Submitted
answer
#include <bits/stdc++.h>
int ask(int, int);
int solve(int, int);
#define rep(i, j, k) for (int i = (j); i <= (k); ++i)
#define per(i, j, k) for (int i = (j); i >= (k); --i)
#define SZ(v) int((v).size())
#define ALL(v) (v).begin(),(v).end()
#define fi first
#define se second
using ll = long long;
using pii = std::pair<int, int>;
using pll = std::pair<ll, ll>;
template<class T> void chkmn(T &x, T y) { if (y < x) x = y; }
template<class T> void chkmx(T &x, T y) { if (y > x) x = y; }
using namespace std;
int n, k;
int ask(int l, int r) {
cout << "? " << l << " " << r << endl;
return cin >> l, l;
}
int qry(int l, int r) {
int len = l <= r ? r - l + 1 : n - l + r + 1, res = ask(l, r);
return res - len + res;
}
int solve(int _n, int _k) {
n = _n, k = _k;
if (k & 1) k--;
if (k == 0 || k == n) return 0;
int cur = qry(n - k, n - 1);
if (!cur) return n - k;
vector<int> vis(n, 0);
if (cur > 0) {
vector<int> vec;
int x = 0;
while (!vis[x]) vec.emplace_back(x), vis[x] = 1, x = (x + k) % n;
vec.pop_back();
int l = 0, r = SZ(vec) - 1, res = SZ(vec);
while (l <= r) {
int mid = (l + r) >> 1;
if (qry(0, (vec[mid] + k - 1) % n) < 0) res = mid, r = mid - 1;
else l = mid + 1;
}
int pos = vec[res];
vec.clear();
x = n - k;
while (x != pos) vec.emplace_back(x), x = (x + 1) % n;
l = 0, r = SZ(vec) - 1;
while (l <= r) {
int mid = (l + r) >> 1, cur = qry(vec[mid], (vec[mid] + k - 1) % n);
if (cur == 0) return vec[mid];
else if (cur < 0) r = mid - 1;
else l = mid + 1;
}
} else {
vector<int> vec;
int x = 0;
while (!vis[x]) vec.emplace_back(x), vis[x] = 1, x = (x + k) % n;
vec.pop_back();
int l = 0, r = SZ(vec) - 1, res = SZ(vec);
while (l <= r) {
int mid = (l + r) >> 1;
if (qry(0, (vec[mid] + k - 1) % n) > 0) res = mid, r = mid - 1;
else l = mid + 1;
}
int pos = vec[res];
vec.clear();
x = n - k;
while (x != pos) vec.emplace_back(x), x = (x + 1) % n;
l = 0, r = SZ(vec) - 1;
while (l <= r) {
int mid = (l + r) >> 1, cur = qry(vec[mid], (vec[mid] + k - 1) % n);
if (cur == 0) return vec[mid];
else if (cur > 0) r = mid - 1;
else l = mid + 1;
}
}
}
int main() {
int n, k;
cin >> n >> k;
int res = solve(n, k);
cout << res << '\n';
}
詳細信息
answer.code: In function ‘int solve(int, int)’: answer.code:85:1: warning: control reaches end of non-void function [-Wreturn-type] 85 | } | ^ /usr/bin/ld: /tmp/ccXG1VqM.o: in function `ask(int, int)': answer.code:(.text+0x0): multiple definition of `ask(int, int)'; /tmp/cc3VBmkY.o:implementer.cpp:(.text+0x30): first defined here /usr/bin/ld: /tmp/ccXG1VqM.o: in function `main': answer.code:(.text.startup+0x0): multiple definition of `main'; /tmp/cc3VBmkY.o:implementer.cpp:(.text.startup+0x0): first defined here collect2: error: ld returned 1 exit status