AT_abc349_g [ABC349G] Palindrome Construction

Description

[problemUrl]: https://atcoder.jp/contests/abc349/tasks/abc349_g 長さ $ M $ の正整数列 $ T=(T_1,T_2,\dots,T_M) $ が**回文**であるとは、各 $ i=1,2,\dots,M $ について $ T_i=T_{M-i+1} $ が成り立つこととします。 長さ $ N $ の非負整数列 $ A\ =\ (A_1,A_2,\dots,A_N) $ が与えられます。次の条件を満たす長さ $ N $ の正整数列 $ S=(S_1,S_2,\dots,S_N) $ が存在するか判定し、存在するならば条件を満たすもののうち辞書順最小のものを求めてください。 - 各 $ i=1,2,\dots,N $ に対して、次の両方が成り立つ - 列 $ (S_{i-A_i},S_{i-A_i+1},\dots,S_{i+A_i}) $ は回文である - $ 2\ \leq\ i-A_i $ かつ $ i+A_i\ \leq\ N-1 $ ならば、列 $ (S_{i-A_i-1},S_{i-A_i},\dots,S_{i+A_i+1}) $ は回文でない

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ A_1 $ $ A_2 $ $ \dots $ $ A_N $

Output Format

条件を満たす $ S $ が存在しなければ、 `No` を出力せよ。 条件を満たす $ S $ が存在するならば、そのうち辞書順最小のものを $ S' $ として、以下の形式で出力せよ。 > Yes $ S'_1 $ $ S'_2 $ $ \dots $ $ S'_N $

Explanation/Hint

### 制約 - $ 1\ \leq\ N\ \leq\ 2\ \times\ 10^5 $ - $ 0\ \leq\ A_i\ \leq\ \min\{i-1,N-i\} $ - 入力はすべて整数 ### Sample Explanation 1 $ S\ =\ (1,1,2,1,1,1,2) $ が条件を満たすことを確認します。 - $ i=1 $: $ (A_1)=(1) $ は回文です - $ i=2 $: $ (A_2)=(1) $ は回文であり、 $ (A_1,A_2,A_3)=(1,1,2) $ は回文ではありません - $ i=3 $: $ (A_1,A_2,\dots,A_5)=(1,1,2,1,1) $ は回文です - $ i=4 $: $ (A_4)=(1) $ は回文であり、 $ (A_3,A_4,A_5)=(2,1,1) $ は回文ではありません - $ i=5 $: $ (A_3,A_4,\dots,A_7)=(2,1,1,1,2) $ は回文です - $ i=6 $: $ (A_6)=(1) $ は回文であり、 $ (A_5,A_6,A_7)=(1,1,2) $ は回文ではありません - $ i=7 $: $ (A_7)=(2) $ は回文です 他にも $ S=(2,2,1,2,2,2,1) $ などが条件を満たしますが、そのうち辞書順最小のものである $ (1,1,2,1,1,1,2) $ を出力します。