만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

우유 교환

시간 제한2초메모리 제한1024 MB

요약
원형으로 놓인 N개의 양동이가 매분 L 또는 R 방향으로 우유를 동시에 옮길 때, M분 뒤 남은 우유의 총량을 구합니다.
난이도

어려움10점 중 8점

유형
시뮬레이션, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

Farmer John의 소 NN마리 (1≤N≤2⋅105)(1 \leq N \leq 2 \cdot 10^5)가 원형으로 줄지어 서 있다. 모든 ii에 대해 1≤i≤N−11 \leq i \leq N-1이면 소 ii의 오른쪽 소는 소 i+1i+1이고, 소 NN의 오른쪽 소는 소 11이다. ii번째 소에게는 정수 용량 aia_i (1≤ai≤109)(1 \leq a_i \leq 10^9)리터짜리 양동이가 있다. 처음에는 모든 양동이가 가득 차 있다. 1분마다 소들은 'L'과 'R'로만 이루어진 문자열 s1s2…sNs_1s_2\dots s_N에 따라 우유를 주고받는다. ii번째 소가 1리터 이상의 우유를 가지고 있으면, sis_i가 'L'이면 왼쪽 소에게, 'R'이면 오른쪽 소에게 우유 1리터를 준다. 모든 교환은 동시에 일어난다. 양동이가 가득 찬 소가 1리터를 주면서 1리터를 받으면, 그 소의 우유량은 그대로다. 소의 우유 총량이 aia_i를 넘으면 넘친 우유는 사라진다. MM분 뒤 (1≤M≤109)(1 \leq M \leq 10^9) 모든 소에 남아 있는 우유의 총량은 얼마인가?

입력

첫째 줄에 NN과 MM이 주어진다. 둘째 줄에는 문자열 s1s2…sNs_1s_2\dots s_N이 주어진다. 이 문자열은 'L'과 'R'로만 이루어져 있으며, 각 소가 우유를 넘기는 방향을 나타낸다. 셋째 줄에는 각 양동이의 용량 a1,a2,…,aNa_1, a_2, \dots, a_N이 주어진다.

출력

MM분 뒤 모든 소가 가진 우유의 합을 정수 하나로 출력한다. 이 문제의 정수는 매우 클 수 있으므로 C/C++의 long long 같은 64비트 정수 자료형을 써야 할 수도 있다.

예제3

  1. 예제 1

    입력
    3 1
    RRL
    1 1 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    5 20
    LLLLL
    3 3 2 3 3
    
    예상 출력
    14
    
  3. 예제 3

    입력
    9 5
    RRRLRRLLR
    5 8 4 9 3 4 9 5 4
    
    예상 출력
    38