AT_icpc2014summer_day4_f Longest Match
题目描述
给定一个字符串 $S$ 和 $m$ 次查询,第 $i$ 个查询包含两个字符串 $x_i,y_i$。
对于每个查询,找到字符串 $S$ 中以 $x_i$ 开头并以 $y_i$ 结尾的最长子串。
对于字符串 $S$,$|S|$ 表示 $S$ 的长度。如果存在整数 $i$,使得对于任意 $1 \le j \le |T|$,$T_j = S_{i+j}$,则称字符串 $T$ 是字符串 $S$ 的子串。
输入格式
输入格式如下。
> $S$
> $m$
> $x_1$ $y_1$
> $x_2$ $y_2$
> $\cdots$
> $x_i$ $y_i$
第一行给定字符串 $S$。
第二行为查询次数 $m$。
从第三行开始的 $m$ 行中,第 $i$ 行包含两个字符串 $x_i,y_i$,表示一次查询。
输出格式
> $len_1$
> $len_2$
> $\cdots$
> $len_i$
输出一共 $m$ 行,第 $i$ 行表示满足第 $i$ 个查询条件的最长子串长度 $len_i$。如果不存在这样的子串,则输出 $0$。
说明/提示
- $1 \le |S| \le 2 \times10^5 $。
- $1 \le m \le 10^5$。
- $1 \le |x_i|,|y_i|$。
- $\sum_{i=1}^m (|x_i|+|y_i|) \le 2 \times 10^5$。
- $S$ 和 $x_i,y_i$ 仅由小写英文字母组成。