結果
問題 | No.594 壊れた宝物発見機 |
ユーザー |
![]() |
提出日時 | 2017-11-10 23:22:06 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 108 ms / 2,000 ms |
コード長 | 2,128 bytes |
コンパイル時間 | 1,359 ms |
コンパイル使用メモリ | 161,060 KB |
実行使用メモリ | 25,616 KB |
平均クエリ数 | 121.00 |
最終ジャッジ日時 | 2024-07-16 14:33:43 |
合計ジャッジ時間 | 5,060 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
#include <bits/stdc++.h>#define rep(i, a, n) for(int i = a; i < n; i++)#define REP(i, n) rep(i, 0, n)#define repb(i, a, b) for(int i = a; i >= b; i--)#define all(a) a.begin(), a.end()#define int long long#define chmax(x, y) x = max(x, y)#define chmin(x, y) x = min(x, y)using namespace std;typedef pair<int, int> P;const int mod = 1000000007;const int INF = 1e12;// 質問クエリint ask(int x, int y, int z) {int d;cout << "?" << " " << x << " " << y << " " << z << endl;cin >> d;return d;}// 回答クエリvoid answer(int x, int y, int z) {cout << "!" << " " << x << " " << y << " " << z << endl;}signed main(){ios::sync_with_stdio(false);cin.tie(0);int a[3] = {10, 10, 10};int l = -150, r = 150, MIN = INF;rep(i, 0, 20){int m1 = (l * 2 + r) / 3;int m2 = (l + 2 * r) / 3;int tmp1, tmp2;tmp1 = ask(m1, a[1], a[2]);tmp2 = ask(m2, a[1], a[2]);if(tmp1 < tmp2){r = m2;}else{l = m1;}if(tmp1 < MIN){MIN = tmp1; a[0] = m1;}if(tmp2 < MIN){MIN = tmp2; a[0] = m2;}}l = -150, r = 150, MIN = INF;rep(i, 0, 20){int m1 = (l * 2 + r) / 3;int m2 = (l + 2 * r) / 3;int tmp1, tmp2;tmp1 = ask(a[0], m1, a[2]);tmp2 = ask(a[0], m2, a[2]);if(tmp1 < tmp2){r = m2;}else{l = m1;}if(tmp1 < MIN){MIN = tmp1; a[1] = m1;}if(tmp2 < MIN){MIN = tmp2; a[1] = m2;}}l = -150, r = 150, MIN = INF;rep(i, 0, 20){int m1 = (l * 2 + r) / 3;int m2 = (l + 2 * r) / 3;int tmp1, tmp2;tmp1 = ask(a[0], a[1], m1);tmp2 = ask(a[0], a[1], m2);if(tmp1 < tmp2){r = m2;}else{l = m1;}if(tmp1 < MIN){MIN = tmp1; a[2] = m1;}if(tmp2 < MIN){MIN = tmp2; a[2] = m2;}}answer(a[0], a[1], a[2]);return 0;}