結果
| 問題 | No.594 壊れた宝物発見機 |
| コンテスト | |
| ユーザー |
shisidor
|
| 提出日時 | 2026-05-06 14:14:33 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 83 ms / 2,000 ms |
| コード長 | 1,469 bytes |
| 記録 | |
| コンパイル時間 | 2,397 ms |
| コンパイル使用メモリ | 341,560 KB |
| 実行使用メモリ | 30,320 KB |
| 平均クエリ数 | 54.05 |
| 最終ジャッジ日時 | 2026-05-06 14:14:39 |
| 合計ジャッジ時間 | 5,758 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
コンパイルメッセージ
main.cpp: In function 'int ask(int, int, int, int, int)':
main.cpp:25:16: warning: 'r0' may be used uninitialized [-Wmaybe-uninitialized]
25 | return (r0 <= r1);
| ~~~~^~~~~~
main.cpp:14:9: note: 'r0' was declared here
14 | int r0, r1;
| ^~
main.cpp:25:16: warning: 'r1' may be used uninitialized [-Wmaybe-uninitialized]
25 | return (r0 <= r1);
| ~~~~^~~~~~
main.cpp:14:13: note: 'r1' was declared here
14 | int r0, r1;
| ^~
ソースコード
#include<bits/stdc++.h>
using namespace std;
map<tuple<int, int, int>, int> mp;
int cnt = 0;
int q(int a, int b, int c) {
if (mp.count({a, b, c})) return mp[{a, b, c}];
cnt++; assert(cnt <= 200);
cout << "? " << a << " " << b << " " << c << endl;
cin >> mp[{a, b, c}]; return mp[{a, b, c}];
}
int ask(int a, int b, int c1, int c2, int idx) {
int r0, r1;
if (idx == 0) {
r0 = q(c1, a, b);
r1 = q(c2, a, b);
}
if (idx == 1) {
r0 = q(a, c1, b); r1 = q(a, c2, b);
}
if (idx == 2) {
r0 = q(a, b, c1); r1 = q(a, b, c2);
}
return (r0 <= r1);
}
int main() {
int x = 0, y = 0, z = 0;
for (int i = 0; i < 3; i++) {
int l = -100, r = 100;
while (r - l >= 3) {
int l1 = l + (r - l) / 3;
int r1 = r - (r - l) / 3;
int ret;
if (i == 0) ret = ask(y, z, l1, r1, i);
if (i == 1) ret = ask(x, z, l1, r1, i);
if (i == 2) ret = ask(x, y, l1, r1, i);
if (ret) r = r1;
else l = l1;
}
while (l < r) {
int ret;
if (i == 0) ret = ask(y, z, l, r, i);
if (i == 1) ret = ask(x, z, l, r, i);
if (i == 2) ret = ask(x, y, l, r, i);
if (ret) r--;
else l++;
}
if (i == 0) x = l;
if (i == 1) y = l;
if (i == 2) z = l;
}
cout << "! " << x << " " << y << " " << z << endl;
}
shisidor