| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 (추가 시간 없음) | 1024 MB (추가 메모리 없음) | 568 | 181 | 138 | 38.873% |
1ドル$번 스티커부터 $M$번 스티커까지 총 $M$종류의 스티커가 있다. $j$번 스티커에는 알파벳 소문자 $s_j$가 적혀 있다. 이때 같은 알파벳이 적힌 스티커가 여러 종류 있을 수 있다.
여러분은 $N$개의 칸으로 나누어진 보드판을 하나 갖고 있다. 각 칸에는 스티커가 하나씩 붙어 있고, $i$번째 칸에는 $b_i$번 스티커가 붙어 있다. 같은 종류의 스티커가 여러 개의 칸에 붙어 있는 것도 가능하다. 1ドル$번째 칸에 있는 스티커부터 $N$번째 칸에 있는 스티커까지 적힌 알파벳을 순서대로 읽으면 알파벳 소문자로 구성된 길이가 $N$인 문자열을 하나 얻는다. 이를 스티커 문자열이라고 정의한다.
여러분은 다음 시행을 통해 스티커 문자열을 바꿀 수 있다. 모든 시행을 완료하였을 때, 보드판에 빈칸이 있으면 안 된다.
여러분의 목표는, 적절하게 시행을 반복하여 스티커 문자열이 입력으로 주어진 길이가 $K(\leq N)$인 문자열 $S$를 부분 문자열로 포함하도록 만드는 것이다. 그러기 위한 최소 비용을 구하여라.
첫 번째 줄에 정수 $N,ドル $M,ドル $K$가 공백으로 구분되어 주어진다.
두 번째 줄부터 $M$개의 줄에 걸쳐 스티커의 정보가 주어진다. 그중 $j$번째 줄에는 $j$번 스티커의 정보 $s_j,ドル $d_j,ドル $a_j$가 공백으로 구분되어 주어진다.
그다음 줄에 $N$개의 정수 $b_1,\cdots ,b_N$이 공백으로 구분되어 주어진다. $b_i$는 보드판의 $i$번째 칸에 있는 스티커의 번호를 의미한다.
그다음 줄에 길이가 $K$인 알파벳 소문자로 구성된 문자열 $S$가 주어진다.
스티커 문자열이 $S$를 부분 문자열로 포함하도록 만드는 데 필요한 최소 비용을 출력한다. 만약 $S$를 부분 문자열로 포함하도록 만들 수 없다면 -1을 출력한다.
5 5 3 w 3 1 a 2 2 p 1 3 a 2 2 s 3 1 1 2 3 4 5 aaa
3
3 6 3 b 1 2 o 2 3 j 3 4 b 4 5 o 5 6 j 6 7 1 5 3 boj
0
3 4 3 g 1 1 o 2 2 o 3 3 d 4 4 3 2 1 bye
-1
문자열 $T$의 부분 문자열이란, 문자열 $T$에서 연속된 일부분에 해당하는 문자열을 의미한다. 예를 들어 문자열 $T$가 "goodbyeboj"이라면 "goo", "db", "j"는 $T$의 부분 문자열이고, "a", "god", "job"는 $T$의 부분 문자열이 아니다.
Contest > BOJ User Contest > Good Bye, BOJ > Good Bye, BOJ 2023! C번