結果
| 問題 |
No.594 壊れた宝物発見機
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-11-10 22:38:47 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 201 ms / 2,000 ms |
| コード長 | 930 bytes |
| コンパイル時間 | 160 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 29,152 KB |
| 平均クエリ数 | 190.00 |
| 最終ジャッジ日時 | 2024-07-16 14:25:37 |
| 合計ジャッジ時間 | 5,513 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
コンパイルメッセージ
Main.rb:38: warning: assigned but unused variable - dist Syntax OK
ソースコード
def trisearch(left, right, equal = nil, &block)
30.times {
l = right - (2 * right - 2 * left) / 3
r = right - (right - left) / 3
lval = block.call(l)
rval = block.call(r)
if (lval <= rval)
right = r
else
left = l
end
return left if (left == right)
}
best = block.call(left);
bestidx = left;
(left+1).upto(right){|t|
f = block.call(t)
if best > f
best = f; bestidx = t
end
}
return nil if equal && equal != block.call(bestidx)
return bestidx
end
def query(x,y,z)
puts "? #{x} #{y} #{z}"
$>.flush
dist = gets.to_i
end
def bye(x,y,z)
puts "! #{x} #{y} #{z}"
exit
end
x = y = z = 0
x = trisearch(-150,150){|t| query(t,y,z)}
y = trisearch(-150,150){|t| query(x,t,z)}
z = trisearch(-150,150){|t| query(x,y,t)}
bye(x,y,z)