問題一覧 > 通常問題

No.1888 Odd Insertion

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 11
作問者 : miscalcmiscalc / テスター : first_vilfirst_vil 👑 ygussanyygussany
3 ProblemId : 7008 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2022-03-17 20:36:45

問題文

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もしくは右上の雲マークをクリックしてアカウントを作成してください。