AT_yahoo_procon2018_final_d LCP(prefix,suffix)
Description
[problemUrl]: https://atcoder.jp/contests/yahoo-procon2018-final/tasks/yahoo_procon2018_final_d
長さ $ N $ の非負整数からなる数列 $ l $ が与えられます。
以下の条件を満たすような長さ $ N $ の文字列 $ s $ が存在するかどうかを判定してください。なお、文字の種類数に制限はないものとします。
- 条件:$ 1 $ 以上 $ N $ 以下のそれぞれの整数 $ i $ について、$ s[1:i] $ と $ s[N-i+1:N] $ の最長共通接頭辞の長さは $ l_i $ である
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ l_1 $ $ l_2 $ $ ... $ $ l_N $
Output Format
条件を満たすような長さ $ N $ の文字列 $ s $ が存在するならば `Yes` を、そうでなければ `No` を出力せよ。
Explanation/Hint
### 注釈
- $ s[i,j]\ (i\ \leq\ j) $ は文字列 $ s $ の $ i $ 文字目から $ j $ 文字目までの部分文字列を指します。 例えば、$ s= $ `ABCBC` のとき、$ s[2:4] $ は `BCB`,$ s[4:5] $ は `BC` となります。
- 文字列 $ s,t $ の共通する接頭辞のうち、最長のものを $ s,t $ の最長共通接頭辞と呼びます。 例えば $ s= $ `ABCBC`,$ t= $ `ABD` のとき、最長共通接頭辞は `AB` となり、$ s= $ `ABC`,$ t= $ `BCD` のとき最長共通接頭辞は空文字列となります。
### 制約
- $ 1\ \leq\ N\ \leq\ 3\ \times\ 10^{5} $
- $ 0\ \leq\ l_i\ \leq\ i $
- 与えられる入力は全て整数
### Sample Explanation 1
\- 例えば `aba` という文字列が条件を満たします。
### Sample Explanation 2
\- 長さ $ 2 $ の文字列は `aa` のような同じ文字の繰り返しで表せる文字列と、`ab` のような異なる $ 2 $ つの文字からなる文字列がありますが、どちらも条件を満たしません。