最长平衡子串 题目描述 定义一个字符串为 $k$ 阶平衡字符串,当且仅当它满足以下条件: 该字符串至多由两种不同字符组成; 设这两种字符在字符串中出现的次数分别为 $c 1,c 2$,则 $ c 1-c 2 \le k$。 如果字符串中只出现一种字符,则把另一种字符的出现次数视为 $0$。 例如,abb 中 a 出现 $1$ 次,b 出现 $2$ 次,二者数量之差为 $1$,因此 abb 是 $1$ 阶平衡字符串,也一定是 $2$ 阶平衡字符串。 现在给出一个长度为 $n$,且至多由两种字母字符组成的字符串 $s$。对于每次询问 $q i$,请你求出 $s$ 的所有非空连续子串中,最长的 $q i$ 阶平衡字符串的长度。 输入格式 输入包含多组测试数据,读到文件结束为止。 每组测试数据包含 $m+2$ 行: 第一行包含两个整数 $n,m$; 第二行包含一个长度为 $n$ 的字符串 $s$; 接下来 $m$ 行,每行一个整数 $q i$,表示一次询问。 输出格式 对于每组测试数据的每次询问,输出一行一个整数,表示字符串 $s$ 的子串中最长的 $q i$ 阶平衡字符串的长度。 数据范围 $1 \le n,m \le 10^5$ 输入样例 5 2 baaaa 2 1 输出样例 4 3 样例说明 当 $q i=2$ 时,子串 baaa 中 b 出现 $1$ 次,a 出现 $3$ 次,数量差为 $2$,长度为 $4$。 当 $q i=1$ 时,子串 baa 中 b 出现 $1$ 次,a 出现 $2$ 次,数量差为 $1$,长度为 $3$。