Auto-Coin-o-Matic
시간 제한2초메모리 제한2048 MB
동전이 하나씩 소진되는 상황에서 금액 v를 만드는 데 필요한 최소 동전 수를 질의마다 구합니다. 만들 수 없으면 -1을 출력합니다.
문제
드디어 새 발명품 Auto-Coin-o-Matic을 공개하는 날이다. 사람들은 카드를 넣고 원하는 금액을 입력한 뒤, 가장 적은 개수의 동전으로 정확한 잔돈을 받는다. 당신은 기쁘면서도 불안한 마음으로 그 모습을 지켜본다.
기계가 정말로 가장 적은 개수의 동전을 냈는지 확인하려고, 거래를 몇 개 무작위로 골라 검증하기로 한다. 그런데 기계에서 일부 종류의 동전이 떨어지고 있다. 그래도 기계가 올바르게 동작할까?
입력
첫 줄에 정수 과 (, )이 주어진다.
다음 줄에는 처음에 보유한 동전의 액면가 ()이 주어진다. 모든 액면가는 서로 다르다.
다음 개의 줄에는 문자 ()와 정수 ()가 주어진다. 는 사건의 종류이고, 는 사건의 값이다.
- 가
Q이면 질의다. 금액 를 정확히 만드는 데 필요한 동전의 최소 개수를 출력한다. 현재 보유한 액면가로 를 정확히 만들 수 없으면 을 출력한다. - 가
X이면 액면가 의 동전이 떨어졌다는 뜻이다. 이후의 질의에서는 이 액면가를 사용할 수 없다. 각X사건의 는 기계가 현재 보유한 액면가임이 보장된다.
출력
질의 사건의 개수를 라 할 때, 줄을 출력한다. 번째 줄에는 번째 질의의 잔돈을 주는 데 필요한 동전의 최소 개수를 출력한다. 불가능하면 을 출력한다.