AT_arc014_4 [ARC014D] grepマスター
Description
[problemUrl]: https://atcoder.jp/contests/arc014/tasks/arc014_4
高橋君は目$ grep $が得意である。しかしこの世には目$ grep $が得意な人が大勢いて特技にならないため、高橋君は新たな技を習得すべく$ grep $コマンドのマニュアルを目$ grep $していた。
検索コマンド $ grep $ には $ -B $ と $ -A $ というオプションがある。これは、
> $ grep $ $ -B $ $ x $ $ -A $ $ y $ $ "needle" $ $ kakikomi.txt $
とすると ファイル$ kakikomi.txt $ でパターン $ "needle" $ にヒットした行だけでなく、その行の直前 $ x $ 行, 直後 $ y $ 行をあわせて表示するというものである。直前直後にある行数が$ x,y $に満たない場合、あるだけ表示する。
同じ行番号の行が複数回表示されることになった場合、これらはマージされ、全体で1回ずつしか現れないようになる。この挙動については出力例の説明が詳しい。
今、ファイル$ kakikomi.txt $ に対してあるパターンで$ grep $を実行し、ヒットする行番号のリスト $ L_1,L_2,...,L_n $ がわかっているものとする。ここに $ m $ 個のクエリが与えられ、それぞれx,yが指定される。各クエリについて、$ -B $ $ x $ $ -A $ $ y $のオプションをつけて同様に$ grep $を実行した場合、表示される行数を答えよ。
入力は以下の形式で標準入力から与えられる。 > $ all $ $ N $ $ M $ $ L_{1} $ $ L_{2} $ : $ L_{N} $ $ x_{1} $ $ y_{1} $ $ x_{2} $ $ y_{2} $ : $ x_{M} $ $ y_{M} $
1. $ 1 $ 行目には $ kakikomi.txt $ の行数を表す整数 $ all(1≦all≦10^9) $、ヒットした行数を表す整数 $ N(1≦N≦min(all,10^5)) $ 、クエリ$ x,\ y $ の個数を表す整数 $ M(1≦M≦10^5) $ が与えられる。
2. $ 2 $ 行目から $ N+1 $ 行までの $ N $ 行では、$ i $ 番目にヒットした行の行番号を表す整数 $ L_{i}(1≦L_{i}≦all) $ が与えられる。
- $ L_i $ は $ L_i\ を満たす。 $
10. $ N+2 $ 行目から $ N+M+1 $ 行までの $ M $ 行では、$ L_i $ に対する各クエリを表す整数 $ x_i,\ y_i(0≦x_i,\ y_i≦10^9) $ が与えられる。
各クエリ$ x,\ y $ に対して表示される行数をそれぞれ$ 1 $ 行で出力すること。
また、出力の最後には改行をいれること。 ```
7 2 3
2
4
1 1
3 0
3 4
```
```
5
4
7
```
- ヒットした行は、 $ 2 $ 行目と $ 4 $ 行目である。
- $ x\ =\ 1,\ y\ =\ 1 $ のとき、それぞれのヒット範囲は、 $ 1 $ ~ $ 3 $ 行目、$ 3 $ ~ $ 5 $ 行目なので、合わせて $ 5 $行が答えとなる。
- $ x\ =\ 3,\ y\ =\ 0 $ のとき、それぞれのヒット範囲は、 $ 1 $ ~ $ 2 $ 行目、$ 1 $ ~ $ 4 $ 行目なので、合わせて $ 4 $行が答えとなる。
- $ x\ =\ 3,\ y\ =\ 4 $ のとき、それぞれのヒット範囲は、 $ 1 $ ~ $ 6 $ 行目、$ 1 $ ~ $ 7 $ 行目なので、合わせて $ 7 $行が答えとなる。
```
100 5 5
3
18
24
57
90
1 8
27 0
15 16
22 3
2 2
```
```
46
80
98
79
25
```
Input Format
N/A
Output Format
N/A