AT_pakencamp_2021_day2_o Golf

Description

[problemUrl]: https://atcoder.jp/contests/pakencamp-2021-day2/tasks/pakencamp_2021_day2_o 文字列 $ S $ が与えられます。 $ S[i:j] $ で $ S $ の $ i $ 文字目から $ j $ 文字目までを取り出した文字列を表すことにします。 文字列 $ T $ が次の条件を全て満たすとき、 $ T $ は*良い文字列*であると定義します。 - $ 1\ \leq\ |T|\ \leq\ |S| $ - $ S[i:i+|T|-1]\ =\ T $ を満たす整数 $ i $ はちょうど $ 1 $ つだけ存在する 例えば $ S $ が `abcbabc` のとき、 `cb` や `abcb` 、 `abcbabc` は*良い文字列*ですが、 `abc` や `zyx` は*良い文字列*ではありません。 $ Q $ 個のクエリが与えられるので処理してください。 $ i $ 番目のクエリでは $ 1\ \leq\ L_i\ \leq\ R_i\ \leq\ |S| $ を満たす整数 $ L_i,\ R_i $ が与えられるので、次の問題の答えを出力してください。 - $ 2 $ つの整数 $ l,\ r $ であって、 $ 1\ \leq\ l\ \leq\ L_i $ と $ R_i\ \leq\ r\ \leq\ |S| $ を満たし、かつ $ S[l:r] $ が*良い文字列*であるようなものを考える。 $ r-l+1 $ の最小値はいくつか?

Input Format

入力は以下の形式で標準入力から与えられる。 > $ S $ $ Q $ $ L_1 $ $ R_1 $ $ L_2 $ $ R_2 $ $ \vdots $ $ L_Q $ $ R_Q $

Output Format

$ Q $ 行出力せよ。 $ i\ \,\ (1\ \leq\ i\ \leq\ Q) $ 行目には $ i $ 番目のクエリの答えを出力せよ。

Explanation/Hint

### 制約 - $ S $ は英小文字からなる - $ 1\ \leq\ |S|\ \leq\ 2\ \cdot\ 10^5 $ - $ 1\ \leq\ Q\ \leq\ 2\ \cdot\ 10^5 $ - $ 1\ \leq\ L_i\ \leq\ R_i\ \leq\ |S|\ \,\ (1\ \leq\ i\ \leq\ Q) $ ### Sample Explanation 1 $ 1 $ 番目のクエリでは、 $ l=2,\ r=4 $ とすると $ r-l+1=3 $ となり、これが最小です。 `bc` は\*良い文字列\*ではないので、 $ l=2,\ r=3 $ とすることはできません。 $ 2 $ 番目のクエリでは、 $ l=2,\ r=5 $ とすると $ r-l+1=4 $ となり、これが最小です。 $ 3 $ 番目のクエリでは、 $ l=1,\ r=7 $ とすると $ r-l+1=7 $ となり、これが最小です。一般に $ S $ そのものは\*良い文字列\*であることに注意してください。 ### Sample Explanation 3 原案: \[Forested\](https://atcoder.jp/users/Forested)