結果
| 問題 | No.594 壊れた宝物発見機 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-10-11 22:36:19 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.90.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 810 bytes |
| 記録 | |
| コンパイル時間 | 675 ms |
| コンパイル使用メモリ | 73,472 KB |
| 実行使用メモリ | 30,308 KB |
| 平均クエリ数 | 79.00 |
| 最終ジャッジ日時 | 2026-06-14 11:22:21 |
| 合計ジャッジ時間 | 3,786 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge1_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 20 |
ソースコード
#include <functional>
#include <vector>
#include <cstdio>
template<typename T,typename F>
T ternarysearch(T lo,T hi,const T eps,const F &predicate){
T r=hi+eps;
for(;lo<hi+eps;){
T mi1=lo+(hi-lo)/3;
T mi2=hi-(hi-lo)/3;
if(predicate(mi1)<predicate(mi2)){
r=mi2;
hi=mi2-eps;
}else{
lo=mi1+eps;
}
}
return r;
}
template<typename T,typename F>
T ternarysearch(T lo,T hi,const F &predicate){return ternarysearch(lo,hi,(T)1,predicate);}
int Q(const std::vector<int>&v){
printf("?");
for(auto &e:v)printf(" %d",e);
puts("");
fflush(stdout);
int n;
scanf("%d",&n);
return n;
}
int main(){
std::vector<int>v(3);
for(int i=0;i<3;i++)v[i]=ternarysearch(-150,151,[&](int n){
std::vector<int>a(3);
a[i]=n;
return Q(a);
});
printf("!");
for(auto &e:v)printf(" %d",e);
puts("");
}