Tea Break 002
コンテスト日時
2019/11/13 (We) 21:00 - 22:30

D - Multiple Multiple

Flavor
2
s
1024
MB
400

問題文

長さ $N$ の数列 $A$ があります。

$A$ の要素から一つ以上選んで総乗(全ての積)をとったとき、値が $M$ に最も近くなるものを求めて下さい。
具体的には、以下の問題を解いてください。
・$1$ 以上 $N$ 以下の相異なる $k\ (k = 1, 2, \dots, N)$ 個の整数 $p_1, p_2, \dots, p_k$ に対して $\prod_{i=1}^k A_{p_i} = X$ としたとき、$|X-M|$ が最も小さくなる $X$ を求めて下さい。

なお、答えが複数ある場合は値が最も小さいものを出力してください。

制約

  • $1 \leq N \leq 18$
  • $1 \leq M \leq 10^{18}$
  • $-10 \leq A_i \leq 10$
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

$N$ $M$
$A_1\ A_2\ \dots\ A_N$

出力

答えを出力してください。

入力例 1
3 5 1 2 3
出力例 1
6

2 と 3 を選んだときの積である 6 が最も 5 に近いです。

入力例 2
5 24 3 2 9 2 2
出力例 2
24

$3 \times 2 \times 2 \times 2 = 24$ です。

提出
C++23 (g++ 12.2.0)