페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#6326
서브태스크

백열등 2 1초 1024MB

문제

N 개의 전등이 가로 일렬로 늘어서 있으며 왼쪽부터 순서대로 1 에서 N 까지의 번호가 매겨져 있다.

각 조명의 색상은 빨간색, 녹색 또는 파란색 중 하나다. 전등들의 색은 문자열 S로 표시되고, i ( 1≤i≤N ) 번째 전등의 색은 Si번째 문자가 R이면 빨강, G이면 녹색, B이면 청색이며, 처음에는 모든 전등이 켜져있다.

켜져있는 전등이 한 개 이상 있으면, 아래 세 종류의 조작을 좋아하는 순서로 좋아하는 횟수 실시할 수 있다 (조작을 한 번도 하지 않아도 상관 없다).

  • A 원을 지불하고 켜진 전등 중에서 가장 왼쪽에 있는 것을 끈다.

  • B 원을 지불하고 켜진 전등 중에서 가장 오른쪽에 있는 것을 끈다.

  • C 원을 지불하고 켜진 전등을 한 개 선택해, 좋아하는 색으로 다시 켠다.

멀리서 이 빛의 줄을 볼 때 깨끗한 흰색으로 보이게 하고 싶다. 이를 위해서는 켜져있는 빛을 왼쪽에서 보았을 때의 색의 배열이 RGBRGB...RGB(RGB적녹청)의 반복이 되어 있을 필요가 있다.

다만, 하나도 켜진 전등이 존재하지 않는 경우 RGB의 반복이라고 생각한다. GBRGBR 및 RGBRG와 같은 색상의 배열은 조건을 충족시키지 않는다.

초기 전등의 상태와 조작에 필요한 금액의 정보가 주어졌을 때, 전등의 색 배열을 RGB반복으로 하는데 필요한 금액의 최솟값을 구하는 프로그램을 작성하시오.


입력

입력은 다음과 같은 형식으로 주어진다.

N

S

A\ B\ C

  • 1 \le N \le 200\ 000

  • S는 길이 N의 문자열로 세 개의 문자 R, G, B로만 이루어져 있다.

  • 1 \le A,B,C \le 10^9

  • N,A,B,C는 정수다.


출력

켜진 전등 색의 배열을 RGB반복으로 하기 위해서 필요한 금액의 최솟값을 출력한다.


부분문제

번호 점수 조건
#14점

N=3

#222점

N \le 300

#319점

N \le 10\ 000

#49점

N3의 배수, A=B=10^9,\ C=1

#510점

A=B=10^9,\ C=1

#636점

추가 제한 없음


예제1

입력
6
GRBBRG
345
출력
16

꺼진 조명을 -로 나태내보자.

  1. 3원을 지불해 -RBBRG로 바꾼다.

  2. 4원을 지불해 -RBBR-로 바꾼다.

  3. 4원을 지불해 -RBB--로 바꾼다.

  4. 5원을 지불해 -RGB--로 바꾼다.


예제2

입력
3
BRG
100000000010000000001
출력
3
  1. 1원을 지불, BGG

  2. 1원을 지불, BGB

  3. 1원을 지불, RGB


예제3

입력
3
GRB
91114
출력
27
  1. 9원을 지불, -RB

  2. 9원을 지불, --B

  3. 9원을 지불, ---


예제4

입력
9
RGBRGBRGB
100000000010000000001
출력
0

예제5

입력
20
BRGBRGBBGBBBGRRBBBRB
100000000010000000001
출력
2000000008

예제6

입력
23
BBGRGBBBBBBGRRGGGGBGGGG
786820955792349124710671229
출력
10107224827

태그


출처

JOI 2024 예선2

역링크