公式

C - Infinity 解説 by ytqm3


実は \(1 \le \max(A)\) ならば Yes であり、そうでない(\(A_N \le 0\))ならば No です。

No の場合についてはどう操作しても \(A_i \le 0\) のままであることから不可能です。

Yes の場合について考えます。ここで、 \(\max(A) = A_m > 0\) であるとし、 \(m \neq 1\) の場合を考えます。 \(a \neq 1, m\) なる \(a\) を一つ取り、以下の操作を考えます。

  1. \(A_{a} \leftarrow A_{1} + A_m\) とする。
  2. \(A_{1} \leftarrow A_{a} + A_m\) とする。

すると、 \(A_{1}\) が操作一回で \(2A_m\) 大きくなるので、この操作を繰り返し行えば \(A_{1}\) をいくらでも大きくすることができることが分かります。

\(m=1\) の場合は、同様に一度 \(A_{2}\) を十分大きくした後、 \(A_1 \leftarrow A_{2} + A_{3}\) などとすれば良いです。

以上よりこの問題を \(O(N)\) で解くことができます。

投稿日時:
最終更新: