#include <algorithm>
#include <cstdlib>
#include <iostream>
#include <numeric>
#include <random>
extern "C" bool Q(const int i, const int j, const int k);
extern "C" bool C(const int i, const int j);
extern "C" int solve(int n);
static int code = -1, *p;
bool Q(const int i, const int j, const int k) { return (p[i] - p[j]) % k == 0; }
bool C(const int i, const int j) {
static int cnt = 0;
if (cnt)
std::cout << "Call C once more" << std::endl;
return p[i] < p[j];
}
int main() {
auto p = [] { std::cout << code << std::endl; };
auto q = [] { std::cout << "at_quick_exit" << std::endl; };
atexit(p);
at_quick_exit(q);
int n;
std::cin >> n;
::p = new int[n];
--::p;
std::iota(::p + 1, ::p + n + 1, 1);
std::random_device real_rnd;
std::mt19937 rnd(real_rnd());
std::shuffle(::p + 1, ::p + n + 1, rnd);
code = ::p[solve(n)];
delete[] (++::p);
return 0;
}
这是我为某个交互题编写的交互库,在测试时使用 C++14 (GCC 9) 提交,但是全部 RE,提示信息是:
Runtime Error.
Received signal 11: Segmentation fault with invalid memory reference.
使用其他 C++ 可以 AC。
通过定义 solve 函数
int solve(int n) {
exit(0);
}
确定了问题在调用 solve 函数之前。
有没有人能帮我解决一下?