atcoder#ABC122C. [ABC122C] GeT AC

[ABC122C] GeT AC

配点 : 300300

問題文

A, C, G, T からなる長さ NN の文字列 SS が与えられます。以下の QQ 個の問いに答えてください。

  • ii (1iQ1 \leq i \leq Q): 整数 li,ril_i, r_i (1li<riN1 \leq l_i < r_i \leq N) が与えられる。SS の先頭から lil_i 文字目から rir_i 文字目までの (両端含む) 部分文字列を考える。この文字列に AC は部分文字列として何回現れるか。

注記

文字列 TT の部分文字列とは、TT の先頭と末尾から 00 文字以上を取り去って得られる文字列です。

例えば、ATCODER の部分文字列には TCO, AT, CODER, ATCODER, `` (空文字列) が含まれ、AC は含まれません。

制約

  • 2N1052 \leq N \leq 10^5
  • 1Q1051 \leq Q \leq 10^5
  • SS は長さ NN の文字列である。
  • SS の各文字は A, C, G, T のいずれかである。
  • 1li<riN1 \leq l_i < r_i \leq N

入力

入力は以下の形式で標準入力から与えられる。

NN QQ

SS

l1l_1 r1r_1

::

lQl_Q rQr_Q

出力

QQ 行出力せよ。ii 行目に問 ii への答えを出力すること。

8 3
ACACTACG
3 7
2 3
1 8
2
0
3
  • 11: SS の先頭から 33 文字目から 77 文字目までの部分文字列は ACTAC です。この文字列に AC は部分文字列として 22 回現れます。
  • 22: SS の先頭から 22 文字目から 33 文字目までの部分文字列は CA です。この文字列に AC は部分文字列として 00 回現れます。
  • 33: SS の先頭から 11 文字目から 88 文字目までの部分文字列は ACACTACG です。この文字列に AC は部分文字列として 33 回現れます。