함정으로 가득한 격자에서 정해진 경로를 따라 이동할 때, 각각 한 번만 쓸 수 있는 최대 12개의 물약을 적절히 사용해 끝까지 살아남을 수 있는지 판정한다.
보통7동적 계획법비트 연산시뮬레이션아직 제출이 없습니다시간 제한8초메모리 제한512 MB"어둠의 덩어리"라고 불리는 동굴은 한때 악의 소굴이었지만, 용사가 마왕과 그 부하를 모두 쓰러뜨려 지금은 조용하다.
어느 날 용사는 마왕이 되살아날까 걱정이 되어, 경비 회사에 동굴 안 순찰을 의뢰했다.
동굴의 정보는 다음과 같다.
경비원이 순찰하는 방식은 다음과 같다.
경비원이 죽지 않고 순찰을 마칠 수 있는지 판정하는 프로그램을 작성하시오.
입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.
HPinit HPmax
R C
a(1,1)a(1,2)...a(1,C)
a(2,1)a(2,2)...a(2,C)
...
a(R,1)a(R,2)...a(R,C)
T
c(1) d(1)
...
c(T) d(T)
S
e(1) n(1)
...
e(S) n(S)
P
p(1)
...
p(P)
첫 줄에는 경비원의 초기 체력 HPinit과 최대 체력 HPmax가 주어진다. (0<HPinit≤HPmax≤1000)
다음 줄에는 R과 C가 주어진다. (1≤R,C≤100) 이어서 C개의 문자로 이루어진 줄이 R개 주어져 동굴을 나타낸다. 문자 ai,j는 i행 j열에 놓인 함정의 종류이고, 함정의 종류는 A부터 Z까지의 대문자로 적는다.
다음 줄에는 설명할 함정 종류의 수 T가 주어진다. 이어지는 T개의 줄에는 대문자 ci와 정수 di가 주어지며, 함정의 종류와 그 함정이 깎는 체력을 뜻한다. (0≤di≤1000) 동굴에 등장하는 함정의 종류는 모두 이 목록에 정확히 한 번씩 나온다.
다음 줄에는 용사가 정해 준 경로의 구간 수 S가 주어진다. (0≤S≤1000) 이어지는 S개의 줄에는 문자 ei와 정수 ni가 주어지며, 경비원이 나아갈 방향과 그 방향으로 내딛는 걸음 수를 뜻한다. (∑ni≤1000) 방향은 위, 아래, 왼쪽, 오른쪽을 각각 뜻하는 U, D, L, R 중 하나다.
마지막으로 경비원이 챙긴 물약의 종류 수 P가 주어지고, 이어지는 P개의 줄에는 그 물약이 회복시키는 체력 pi가 주어진다. (0≤P≤12, 0<pi≤1000)
입력의 마지막 줄에는 0이 두 개 주어진다. 이 줄은 처리하지 않는다.
각 데이터셋마다 경비원이 순찰을 무사히 마치면 YES를, 그러지 못하면 NO를 한 줄에 출력한다.
순찰이 끝난 시점에 경비원의 체력이 0 이하이면 NO를 출력한다.