문제
각 조명의 색상은 빨간색, 녹색 또는 파란색 중 하나다. 전등들의 색은 문자열
켜져있는 전등이 한 개 이상 있으면, 아래 세 종류의 조작을 좋아하는 순서로 좋아하는 횟수 실시할 수 있다 (조작을 한 번도 하지 않아도 상관 없다).
A 원을 지불하고 켜진 전등 중에서 가장 왼쪽에 있는 것을 끈다.B 원을 지불하고 켜진 전등 중에서 가장 오른쪽에 있는 것을 끈다.C 원을 지불하고 켜진 전등을 한 개 선택해, 좋아하는 색으로 다시 켠다.
멀리서 이 빛의 줄을 볼 때 깨끗한 흰색으로 보이게 하고 싶다. 이를 위해서는 켜져있는 빛을 왼쪽에서 보았을 때의 색의 배열이 RGBRGB...RGB(RGB적녹청)의 반복이 되어 있을 필요가 있다.
다만, 하나도 켜진 전등이 존재하지 않는 경우 RGB의 반복이라고 생각한다. GBRGBR 및 RGBRG와 같은 색상의 배열은 조건을 충족시키지 않는다.
초기 전등의 상태와 조작에 필요한 금액의 정보가 주어졌을 때, 전등의 색 배열을 RGB반복으로 하는데 필요한 금액의 최솟값을 구하는 프로그램을 작성하시오.
입력
입력은 다음과 같은 형식으로 주어진다.
1 \le N \le 200\ 000 S 는 길이N 의 문자열로 세 개의 문자R, G, B 로만 이루어져 있다.1 \le A,B,C \le 10^9 N,A,B,C 는 정수다.
출력
켜진 전등 색의 배열을 RGB반복으로 하기 위해서 필요한 금액의 최솟값을 출력한다.
부분문제
번호 | 점수 | 조건 |
---|---|---|
#1 | 4점 | |
#2 | 22점 | |
#3 | 19점 | |
#4 | 9점 | |
#5 | 10점 | |
#6 | 36점 | 추가 제한 없음 |
예제1
6
GRBBRG
3 4 5
16
꺼진 조명을 -로 나태내보자.
3원을 지불해 -RBBRG로 바꾼다.
4원을 지불해 -RBBR-로 바꾼다.
4원을 지불해 -RBB--로 바꾼다.
5원을 지불해 -RGB--로 바꾼다.
예제2
3
BRG
1000000000 1000000000 1
3
1원을 지불, BGG
1원을 지불, BGB
1원을 지불, RGB
예제3
3
GRB
9 11 14
27
9원을 지불, -RB
9원을 지불, --B
9원을 지불, ---
예제4
9
RGBRGBRGB
1000000000 1000000000 1
0
예제5
20
BRGBRGBBGBBBGRRBBBRB
1000000000 1000000000 1
2000000008
예제6
23
BBGRGBBBBBBGRRGGGGBGGGG
786820955 792349124 710671229
10107224827