单点时限: 2.5 sec
内存限制: 512 MB
“我喜欢看日落,我们一起看日落吧。”
“可是得等等。”
“等什么?”
“等太阳落山。”
你的星球只有房子那么大,只要你愿意,挪动几步椅子就可以随时看到你喜欢的夕阳晚景了。
但你和他不同,没有小狐狸的陪伴,身旁只有一台呆板的摄像机忠实地记录着日落的轨迹。
日落的轨迹总是如此的相似,以至于在你的摄像机中每一次日落的场景都毫无差别。
可你不甘于单调,希望在重复中找到不同。你通过截取很多很多不同的日落片段,来表现日落的变化多姿。
你找出了摄像机的视频,发现它的编码都是由小写字母构成的。一段日落场景则是由一个全部是小写字母的字符串 $S$ 构成;摄像机中的场景,就是字符串 $S$ 被复制很多很多份后组成的大字符串 $SSSS\cdots $。
你所谓的不同日落片段的个数,就是寻找大字符串 $SSSS\cdots $ 中前 $x$ 位中有所少个本质不同的子串。
第一行输入两个整数 $n,q$ ($1\le n,q\le 10^5$),表示字符串 $S$ 的长度和询问的个数。
第二行输入一个长度为 $n$ 的由小写字母组成的字符串 $S$。
接下来的 $q$ 行,每行包含一个整数 $x$ ($1\le x\le 10^9$),表示询问大字符串 $SSSS\cdots $ 的前 $x$ 中有多少个本质不同的子串。
输出包含 $q$ 行,第 $i$ 行一个整数,代表第 $i$ 个询问的答案。
4 5 abaa 2 4 5 10 123
3 8 11 31 483