问题 B: 牛奶交换

问题 B: 牛奶交换

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 256 MiB

题目描述

【题目描述】

Farmer John 的N(1≤N≤2⋅105)头奶牛排成一圈,使得对于1,2,…,N−1中的每个i,奶牛i右边的奶牛是奶牛i+1,而奶牛N右边的奶牛是奶牛1。第i头奶牛有一个容量为整数ai(1≤ai≤109)升的桶。所有桶初始时都是满的。

每一分钟,奶牛都会根据一个字符串s1s2…sN传递牛奶,该字符串仅由字符‘L’和‘R’组成。当第i头奶牛至少有1升牛奶时,如果si=‘L’,她会将1升牛奶传递给她左边的奶牛,如果si=‘R’则传递给右边的奶牛。所有交换同时发生(即,如果一头奶牛的桶是满的,送出一升牛奶,但也收到一升,则她的牛奶量保持不变)。如果此时一头奶牛的牛奶量超过ai,则多余的牛奶会损失。

FJ 想要知道:经过M分钟(1≤M≤109)后,所有奶牛总共还余下多少牛奶?

【输入格式】

输入的第一行包含N和M。

第二行包含一个字符串s1s2…sN,仅由字符 L’或‘R’组成,表示每头奶牛传递牛奶的方向。

第三行包含整数a1,a2,…,aN,为每个桶的容量。

【输出格式】

输出一个整数,为M分钟后所有奶牛总共余下的牛奶量。

注意这个问题涉及到的整数可能需要使用 64 位整数型(例如,C/C++ 中的 "long long")。

【输入样例一】

3 1

RRL

1 1 1

【输出样例一】

2

【样例一说明】

奶牛2和3互相传递一升牛奶,因此她们的牛奶得以保留。当奶牛1将牛奶传递给奶牛2时,奶牛2的桶会溢出,从而一分钟后损失了一升牛奶。

【输入样例二】

5 20

LLLLL

3 3 2 3 3

【输出样例二】

14

【样例二说明】

每头奶牛都将一升牛奶传递给左边的奶牛,并从右边的奶牛那里获得一升牛奶,因此无论经过多长时间所有牛奶都会被保留下来。

【输入样例三】

9 5

RRRLRRLLR

5 8 4 9 3 4 9 5 4

【输出样例三】

38

【样例三说明】

初始时,共有 51 升牛奶。5 分钟后,奶牛36和7将分别损失 5,3 和 5 升牛奶。因此,总共还剩下 38 升牛奶。

【测试点性质】

测试点 4-8:N,M≤1000。

测试点 9-16:没有额外限制。

 

输入

输入的第一行包含N和M。

第二行包含一个字符串s1s2…sN,仅由字符 L’或‘R’组成,表示每头奶牛传递牛奶的方向。

第三行包含整数a1,a2,…,aN,为每个桶的容量。

输出

输出一个整数,为M分钟后所有奶牛总共余下的牛奶量。

注意这个问题涉及到的整数可能需要使用 64 位整数型(例如,C/C++ 中的 "long long")。

样例输入 复制

9 5
RRRLRRLLR
5 8 4 9 3 4 9 5 4

样例输出 复制

38