This documentation is automatically generated by online-judge-tools/verification-helper
#include "util/jury.hpp"
インタラクティブ問題の大枠.
auto jury = Jury<int, bool, 20>()
: Juryを準備.
jury.query(n)
: 質問クエリ.jury.answer(x)
: 解答クエリ.
exit(0)
で終了するようにするべき./**
* @brief インタラクティブ問題
* @docs docs/util/jury.md
*/
template <typename T, typename R, int QMX>
struct Jury {
int query_cnt;
map<T, R> memo;
T N;
Jury()
: query_cnt(0) {
// N = rand();
#ifdef LOCAL
cerr << "N : " << N << endl;
#endif
}
Jury(T _N)
: query_cnt(0) {
N = _N;
#ifdef LOCAL
cerr << "N : " << N << endl;
#endif
}
R query(T X) {
if (memo.count(X)) return memo[X];
if (++query_cnt > QMX) {
cerr << "Query Limit Exceeded" << endl;
exit(1);
}
#ifdef LOCAL
cerr << query_cnt << " : " << X << endl;
// return memo[n] = ...;
#else
// cout << "? " << X << endl;
// int rsp; cin >> rsp;
// return memo[n] = rsp;
#endif
}
void answer(T X) {
#ifdef LOCAL
if (X == N) {
cerr << "AC : " << X << endl;
} else {
cerr << "WA : " << X << " " << N << endl;
}
// exit(0);
#else
// cout << "! " << X << endl;
exit(0);
#endif
}
};
#line 1 "util/jury.hpp"
/**
* @brief インタラクティブ問題
* @docs docs/util/jury.md
*/
template <typename T, typename R, int QMX>
struct Jury {
int query_cnt;
map<T, R> memo;
T N;
Jury()
: query_cnt(0) {
// N = rand();
#ifdef LOCAL
cerr << "N : " << N << endl;
#endif
}
Jury(T _N)
: query_cnt(0) {
N = _N;
#ifdef LOCAL
cerr << "N : " << N << endl;
#endif
}
R query(T X) {
if (memo.count(X)) return memo[X];
if (++query_cnt > QMX) {
cerr << "Query Limit Exceeded" << endl;
exit(1);
}
#ifdef LOCAL
cerr << query_cnt << " : " << X << endl;
// return memo[n] = ...;
#else
// cout << "? " << X << endl;
// int rsp; cin >> rsp;
// return memo[n] = rsp;
#endif
}
void answer(T X) {
#ifdef LOCAL
if (X == N) {
cerr << "AC : " << X << endl;
} else {
cerr << "WA : " << X << " " << N << endl;
}
// exit(0);
#else
// cout << "! " << X << endl;
exit(0);
#endif
}
};