No.1888 Odd Insertion
タグ : / 解いたユーザー数 11
作問者 : miscalc / テスター : first_vil 👑 ygussany
問題文
miscalc くんは、集合 $S = \{1, 2, \ldots, N\}$ と空の数列 $A$ を持っています。これらに対し、$N$ 回の操作を行います。$i$ 回目の操作では、以下を順に行います。
-
以下のうちで存在するものから $1$ つを選び、選んだものを $x$ とする。
- $S$ に含まれる最小の要素
- $S$ に含まれる $2$ 番目に小さい要素
- $1 \leq y \leq i$ を満たす奇数 $y$ を選ぶ。
- $x$ を $S$ から削除し、$A$ の先頭から $y$ 番目に挿入する。
操作がすべて完了したあと、$A$ を $P = (P_1, P_2, \ldots, P_N)$ に一致させることが可能かどうか判定し、可能な場合はそのような操作手順の一例を示してください。
入力
$N$ $P_1$ $P_2$ $\ldots$ $P_N$
- 入力はすべて整数である
- $1 \leq N \leq 2 \times 10^5$
- $P$ は $(1, 2, \ldots, N)$ の順列である
出力
$A$ を $P$ に一致させることが不可能な場合、No
と出力してください。
$A$ を $P$ に一致させることが可能な場合、$i$ 回目の操作で選んだ $x, y$ をそれぞれ $x_i, y_i$ として、以下の形式で操作手順を出力してください。
Yes $x_1$ $y_1$ $x_2$ $y_2$ $\vdots$ $x_N$ $y_N$
条件を満たす操作手順が複数存在する場合、そのうちのどれを出力してもかまいません。
サンプル
サンプル1
入力
4 3 1 4 2
出力
Yes 1 1 3 1 2 3 4 3
出力の操作によって、$S$ と $A$ は次のように変化します。
- はじめ、$S = \{1, 2, 3, 4 \}, A = ()$ である。
- $x = 1, y = 1$ を選ぶ。$S = \{2, 3, 4 \}, A = (1)$ になる。
- $x = 3, y = 1$ を選ぶ。$S = \{2, 4 \}, A = (3, 1)$ になる。
- $x = 2, y = 3$ を選ぶ。$S = \{4 \}, A = (3, 1, 2)$ になる。
- $x = 4, y = 3$ を選ぶ。$S = \{ \}, A = (3, 1, 4, 2)$ になる。
ほかにも、たとえば次のような出力も正答とみなされます。
Yes 2 1 1 1 3 1 4 3
サンプル2
入力
4 1 4 2 3
出力
No
$A = (1, 4, 2, 3)$ にすることはできません。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。