광물 수집
시간 제한1초메모리 제한1024 MB
0에서 시작하는 수직선 위 광물을 최소 에너지로 모두 젬으로 만들 때, 질의한 두 광물이 같은 젬에 들어갈 수 있는지 판단합니다.
문제
여러분은 광산에서 광물을 수집하고 가공하여 회사에 납품하는 일을 한다. 광산은 반직선 형태이다. 광산에는 매일 아침 개 종류의 광물이 생성된다. 번 광물은 수직선의 위치에 개 생성된다.
회사에서 받은 특이한 로봇을 원격 조작하여 광물을 채취하고 가공한다. 로봇의 특징은 다음과 같다.
- 로봇의 처음 위치는 이다.
- 원하는 위치로 이동할 수 있다. 이동한 거리만큼 에너지를 소모한다.
- 같은 위치에 있는 광물을 원하는 개수만큼 1개씩 담을 수 있다. 가. 로봇의 저장소는 최대 개의 광물을 담을 수 있으며, 한 번 담은 광물은 버릴 수 없다. 나. 광물을 담는 데 에너지를 소모하지 않는다.
- 로봇은 위치 에서 보석을 제조할 수 있다. 가. 보석을 제조하려면 저장소에 광물이 적어도 1개 이상 있어야 한다. 나. 저장소에 담긴 광물을 모두 소모하여 보석을 만든다. 이때 만든 보석 는 제조에 사용한 광물 번호의 집합 로 나타낸다. 다. 보석을 제조하는 데 에너지를 소모하지 않는다.
일과는 광산에 있는 모든 광물을 소모하여 보석을 만들고, 로봇을 처음 위치로 돌려놓는 것이다. 하루에 일과를 끝낼 수 있는 최소 에너지 만 사용하여 로봇을 조종해 보석을 만든다. 당일 일과를 무사히 마쳤다면 다음 날 아침에는 당일 아침과 같은 상태로 복원된다.
회사에서 매일 VIP 요구 사항 1개를 전달받는다. 일차 요구 사항은 양의 정수 , 로 이루어져 있으며, 번 광물과 번 광물을 포함한 보석을 요구한다는 뜻이다.
일차 요구 사항을 받았을 때, 만큼의 에너지를 사용하여 일과를 무사히 마치면서 를 만족하는 보석 를 만들 수 있는지 판단하는 프로그램을 작성하시오.
입력
첫 번째 줄에 광물의 종류 , 로봇 저장소에 담을 수 있는 광물의 최대 수 , 근무 기간 가 공백으로 구분되어 주어진다.
두 번째 줄부터 개의 줄에 걸쳐 광물의 정보가 주어진다. 번째 줄에는 번 광물의 위치 와 개수 가 공백으로 구분되어 주어진다. 광물의 위치는 서로 다르다.
그다음 개의 줄에 걸쳐 VIP 고객의 요구 사항이 주어진다. 번째 줄에는 서로 다른 두 광물 와 가 공백으로 구분되어 주어진다.
출력
개의 줄에 걸쳐 VIP 요구 사항을 만족하는 보석을 만들 수 있으면 YES, 없으면 NO를 출력한다.