結果
問題 | No.3018 目隠し宝探し |
ユーザー |
![]() |
提出日時 | 2025-01-25 13:21:59 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 77 ms / 2,000 ms |
コード長 | 1,522 bytes |
コンパイル時間 | 3,151 ms |
コンパイル使用メモリ | 273,840 KB |
実行使用メモリ | 25,972 KB |
平均クエリ数 | 2.64 |
最終ジャッジ日時 | 2025-01-25 22:44:47 |
合計ジャッジ時間 | 6,285 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge11 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h>#include <bits/stdc++.h>#include <bits/stdc++.h>using namespace std;// #include <atcoder/modint>// using namespace atcoder;// using mint = modint998244353;using ll = long long;#define fix(x) fixed << setprecision(x)#define rep(i, n) for(int i = 0; i < n; ++i)#define all(x) (x).begin(),(x).end()template<class T>bool chmin(T&a, const T&b){if(a>b){a=b;return 1;}return 0;}template<class T>bool chmax(T&a, const T&b){if(a<b){a=b;return 1;}return 0;}constexpr ll INFLL = (1LL << 62), MOD = 998244353;constexpr int INF = (1 << 30);int sqrt_int(int x){int res = sqrt(x);for(int i=res-1;i<=res+1;++i){if(i*i==x) return i;}assert(false);return -1;}int main(){cin.tie(nullptr);ios::sync_with_stdio(false);int h,w;cin >> h >> w;auto ans = [&](int i, int j) -> void {cout << "! " << i << " " << j << endl;exit(0);};auto query = [&](int i, int j) -> int {cout << "? " << i << " " << j << endl;int res;cin >> res;assert(res>=0);if(res==0) ans(i,j);return res;};if(h==1&&w==1) ans(1,1);int x = query(1,1);if(h==1 || w==1){if(h==1) ans(1, 1 + sqrt_int(x));else ans(1 + sqrt_int(x), 1);}int y = query(1,2);for(int i=1;i<=h;++i)for(int j=1;j<=w;++j){if((i-1)*(i-1)+(j-1)*(j-1)==x && (i-1)*(i-1)+(j-2)*(j-2)==y){ans(i,j);}}sleep(998244353);return 0;}