字母能量查询(energy)

题目描述

DAMON THRONE\text{DAMON THRONE} 的训练系统生成了一个由小写字母组成的口令串。

定义每个小写字母的能量值如下:

$$\texttt{a}=1,\ \texttt{b}=2,\ \texttt{c}=3,\ \ldots,\ \texttt{z}=26 $$

现在给定一个长度为 nn 的字符串 ss,以及 qq 次询问。

每次询问给出三个参数 l,r,kl,r,k,你需要在子串 sl,sl+1,,srs_l,s_{l+1},\ldots,s_r 中,找出所有能量值不超过 kk 的字符,并输出:

  1. 这样的字符数量;
  2. 这些字符的能量值总和。

输入格式

第一行包含两个整数 n,qn,q,表示字符串长度和询问次数。

第二行包含一个长度为 nn 的字符串 ss,字符串只包含小写英文字母。

接下来 qq 行,每行包含三个整数 l,r,kl,r,k,表示一次询问。

输出格式

对于每次询问,输出一行两个整数,分别表示:

  • 能量值不超过 kk 的字符数量;
  • 这些字符的能量值总和。

输入输出样例 #1

输入 #1

11 4
damonthrone
1 11 13
2 5 14
6 11 20
3 9 10

输出 #1

5 31
3 28
6 80
1 8

样例解释 #1

字符串为:

damonthrone

对于询问 1,11,131,11,13,能量值不超过 1313 的字符为:

d,a,m,h,e\texttt{d,a,m,h,e}

数量为 55,能量和为:

4+1+13+8+5=314+1+13+8+5=31

输入输出样例 #2

输入 #2

5 3
zzzzz
1 5 25
1 5 26
2 4 26

输出 #2

0 0
5 130
3 78

数据范围与约定

对于所有测试数据,保证:

$$1 \le n,q \le 10^5,\quad 1 \le l \le r \le n,\quad 1 \le k \le 26 $$
测试点 分值 nn qq 特殊性质
121\sim 2 1010 100\le 100
343\sim 4 2020 2000\le 2000 A\text{A}
565\sim 6 105\le 10^5 B\text{B}
787\sim 8 C\text{C}
9109\sim 10 3030

特殊性质 A\text{A}:保证所有询问的 k=26k=26

特殊性质 B\text{B}:保证所有字符都相同。

特殊性质 C\text{C}:保证所有询问满足 l=1l=1