AT_abc288_d [ABC288D] Range Add Query
Description
[problemUrl]: https://atcoder.jp/contests/abc288/tasks/abc288_d
長さ $ N $ の整数列 $ A\ =\ (A_1,\ A_2,\ \ldots,\ A_N) $ と正整数 $ K $ が与えられます。
各 $ i\ =\ 1,\ 2,\ \ldots,\ Q $ について、$ A $ の連続部分列 $ (A_{l_i},\ A_{l_i+1},\ \ldots,\ A_{r_i}) $ が**良い数列**かどうかを判定してください。
ここで、長さ $ n $ の数列 $ X\ =\ (X_1,\ X_2,\ \ldots,\ X_n) $ は、下記の操作を好きな回数( $ 0 $ 回でも良い)だけ行うことによって、$ X $ のすべての要素を $ 0 $ にすることができるとき、かつ、そのときに限り**良い数列**です。
> $ 1\ \leq\ i\ \leq\ n-K+1 $ を満たす整数 $ i $ および、整数 $ c $ (負の数でも良い)を選び、$ K $ 個の要素 $ X_{i},\ X_{i+1},\ \ldots,\ X_{i+K-1} $ のそれぞれに $ c $ を加算する。
なお、すべての $ i\ =\ 1,\ 2,\ \ldots,\ Q $ について、$ r_i\ -\ l_i\ +\ 1\ \geq\ K $ が保証されます。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ K $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ Q $ $ l_1 $ $ r_1 $ $ l_2 $ $ r_2 $ $ \vdots $ $ l_Q $ $ r_Q $
Output Format
$ Q $ 行出力せよ。 $ i\ =\ 1,\ 2,\ \ldots,\ Q $ について、$ i $ 行目には数列 $ (A_{l_i},\ A_{l_i+1},\ \ldots,\ A_{r_i}) $ が良い数列である場合は `Yes` を、 そうでない場合は `No` を出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
- $ 1\ \leq\ K\ \leq\ \min\lbrace\ 10,\ N\ \rbrace $
- $ -10^9\ \leq\ A_i\ \leq\ 10^9 $
- $ 1\ \leq\ Q\ \leq\ 2\ \times\ 10^5 $
- $ 1\ \leq\ l_i,\ r_i\ \leq\ N $
- $ r_i-l_i+1\ \geq\ K $
- 入力はすべて整数
### Sample Explanation 1
数列 $ X\ \coloneqq\ (A_1,\ A_2,\ A_3,\ A_4,\ A_5,\ A_6)\ =\ (3,\ -1,\ 1,\ -2,\ 2,\ 0) $ は良い数列です。 実際、下記の手順で操作を行うことで、すべての要素を $ 0 $ にすることができます。 - まず、$ i\ =\ 2,\ c\ =\ 4 $ として操作を行う。その結果、$ X\ =\ (3,\ 3,\ 5,\ 2,\ 2,\ 0) $ となる。 - 次に、$ i\ =\ 3,\ c\ =\ -2 $ として操作を行う。その結果、$ X\ =\ (3,\ 3,\ 3,\ 0,\ 0,\ 0) $ となる。 - 最後に、$ i\ =\ 1,\ c\ =\ -3 $ として操作を行う。その結果、$ X\ =\ (0,\ 0,\ 0,\ 0,\ 0,\ 0) $ となる。 よって、$ 1 $ 行目には `Yes` を出力します。 一方、数列 $ (A_2,\ A_3,\ A_4,\ A_5,\ A_6,\ A_7)\ =\ (-1,\ 1,\ -2,\ 2,\ 0,\ 5) $ は、 どのような手順で操作を行ってもすべての要素を $ 0 $ にすることはできないため、良い数列ではありません。 よって、$ 2 $ 行目には `No` を出力します。