AT_arc171_d [ARC171D] Rolling Hash
Description
[problemUrl]: https://atcoder.jp/contests/arc171/tasks/arc171_d
非負整数 $ P,\ B $ が与えられます。$ P $ は素数で、$ 1\ \leq\ B\ \leq\ P-1 $ です。
非負整数列 $ X=(x_1,x_2,\dots,x_n) $ に対して $ X $ のハッシュ値 $ \mathrm{hash}(X) $ を次のように定義します。
$ \displaystyle\ \mathrm{hash}(X)\ =\ \left(\sum_{i=1}^n\ x_i\ B^{n-i}\right)\ \bmod\ P $
$ M $ 個の整数対 $ (L_1,\ R_1),\ (L_2,\ R_2),\ \dots,\ (L_M,\ R_M) $ が与えられます。 次の条件を満たす長さ $ N $ の非負整数列 $ A=(A_1,\ A_2,\ \dots,\ A_N) $ は存在しますか?
- すべての $ i $ $ (1\ \leq\ i\ \leq\ M) $ について次の条件が成り立つ。
- $ A $ の $ L_i $ 番目から $ R_i $ 番目までの要素を取り出して出来る数列 $ (A_{L_i},\ A_{L_i\ +\ 1},\ \dots,\ A_{R_i}) $ を $ s $ とおいたとき、$ \mathrm{hash}(s)\ \neq\ 0 $ である。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ P $ $ B $ $ N $ $ M $ $ L_1 $ $ R_1 $ $ L_2 $ $ R_2 $ $ \vdots $ $ L_M $ $ R_M $
Output Format
問題文の条件を満たす数列が存在すれば `Yes` を、存在しなければ `No` を出力せよ。
Explanation/Hint
### 制約
- $ 2\ \leq\ P\ \leq\ 10^9 $
- $ P $ は素数
- $ 1\ \leq\ B\ \leq\ P\ -\ 1 $
- $ 1\ \leq\ N\ \leq\ 16 $
- $ 1\ \leq\ M\ \leq\ \frac{N(N+1)}{2} $
- $ 1\ \leq\ L_i\ \leq\ R_i\ \leq\ N $
- $ i\ \neq\ j $ ならば $ (L_i,\ R_i)\ \neq\ (L_j,\ R_j) $
- 入力される値はすべて整数
### Sample Explanation 1
数列 $ A\ =\ (2,\ 0,\ 4) $ は $ \mathrm{hash}((A_1))\ =\ 2,\ \mathrm{hash}((A_1,\ A_2))\ =\ 1,\ \mathrm{hash}((A_2,\ A_3))\ =\ 1 $ であるため問題文の条件を満たす数列です。
### Sample Explanation 2
問題文の条件を満たす数列は存在しません。