結果

問題 No.594 壊れた宝物発見機
ユーザー ciel
提出日時 2020-10-11 23:04:26
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 124 ms / 2,000 ms
コード長 826 bytes
コンパイル時間 528 ms
コンパイル使用メモリ 66,180 KB
最終ジャッジ日時 2025-01-15 06:45:43
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 20
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int Q(const std::vector<int>&)’:
main.cpp:28:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   28 |         scanf("%d",&n);
      |         ~~~~~^~~~~~~~~

ソースコード

diff #

#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=lo;
	for(;lo<hi+eps;){
		T mi1=lo+(hi-lo)/3;
		T mi2=hi-(hi-lo)/3;
		if(predicate(mi1)<predicate(mi2)){
			hi=mi2-eps;
		}else{
			r=mi1;
			lo=mi1+eps;
		}
	}
	return r;
}
template<typename T,typename F=std::function<T(T)>>
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("");
}
0