#2958. D-乱写检测机

D-乱写检测机

题面描述

小智遇到了一场史无前例的难的数学考试,绞尽脑汁也无法完成所有的题目,对于无法完成的题目,他将会随机选择一个答案填上去。但是魔高一尺道高一丈,老师发明了“乱写检测机”,检测到如果你是乱填的就要惩罚再写一张试卷。

​ 乱写检测机的逻辑如下:一旦在答案序列中发现超过连续的xx个A或者连续的yy个B或者连续的zz个C,就会判定为乱写!小智写出了长度为nn的答案序列a(a1,a2...an1,an)a(a_1,a_2...a_{n-1},a_n),请你帮他找一找,

有多少对[l,r][l,r]符合以下条件:

al,al+1...ar1,ara_l,a_{l+1}...a_{r-1},a_r可以不被”乱写检测机“检查出来是乱写的。

​ 或者说:al,al+1...ar1,ara_l,a_{l+1}...a_{r-1},a_r 不存在连续的 xAyBzCx个A 或 y个B 或 z个C

输入

第一行输入一个整数nn,代表小智写的答案序列的长度。(1n105)(1\leq n \leq 10^5)

第二行输入三个整数x,y,zx,y,z,分别代表答案中A,B,CA,B,C不能连续出现的次数。(1x,y,zn)(1\leq x,y,z \leq n)

第三行输入nn个大写字母a1,a2...an1,ana_1,a_2...a_{n-1},a_n,代表小智的答案序列。(a[i]{A,B,C})(a[i]\in\{A,B,C\})

输出

一个整数,代表符合条件的[l,r][l,r]对数。

样例输入 1

10
1 1 1
ABCABCABAA

样例输出 1

46

样例输入 2

5
1 1 1
ABCAA

样例输出 2

11

样例解释 2

符合条件的[l,r]有: (1,1),(1,2),(1,3),(1,4) (2,2),(2,3),(2,4) (3,3),(3,4) (4,4) (5,5) 共11种

样例输入 3

5
1 1 1
AABAA

样例输出 3

8

样例解释 3

(1,1)(2,2)(2,3)(2,4)(3,3)(3,4)(4,4)(5,5)共8种

测试数据

测试点编号 数据范围
1 ~ 3 n <= 100
4 ~ 6 n <= 10000
7 ~ 10 n <= 100000