Mortal Combat
면접 대비시간 제한2초메모리 제한512 MB
히어로를 한 명씩 보내서 보스를 쓰러뜨리는 문제이며, 잃는 히어로를 최소로 하는 순서를 찾고 불가능하면 -1을 출력합니다.
문제
Vasya는 새 비디오 게임을 시작했다. 첫 번째 레벨이 끝날 때 그는 레벨 보스와 전투를 벌인다. 게임을 계속하려면 이 전투에서 이겨야 한다. Vasya에게는 n명의 영웅으로 이루어진 부대가 있고, i번째 영웅은 체력 hi와 공격력 ai를 가진다. 보스는 체력 H와 공격력 A를 가진다.
전투는 다음과 같이 진행된다.
-
Vasya에게 영웅이 더 이상 남아 있지 않으면 게임에서 진다.
-
영웅이 한 명 이상 남아 있으면, 그중 아무나 한 명을 골라 보스와 싸우게 할 수 있다.
-
i번째 영웅을 골랐다면 전투는 다음과 같이 진행된다.
- 영웅이 보스를 공격해 보스의 체력을 ai만큼 줄인다.
- 보스가 아직 살아 있다면, 즉 체력이 0보다 크다면, 보스가 영웅을 공격해 영웅의 체력을 A만큼 줄인다.
- 영웅과 보스가 모두 살아 있는 동안 공격이 반복된다.
-
보스가 죽으면 전투가 끝나고 Vasya가 이긴다. 그렇지 않으면 모든 과정이 다시 반복된다.
Vasya는 게임의 첫 레벨에서 영웅을 너무 많이 잃고 싶지 않다. 그래서 잃는 영웅 수를 최소로 하도록 전투를 계획하려 한다. 보스를 물리치면서 잃을 수 있는 영웅 수의 최솟값을 구하자. 영웅을 모두 잃고서도 보스를 물리칠 수 없다면 -1을 출력한다.
예제를 살펴보자.
첫 번째 테스트에서 최적의 계획은 다음과 같다. 먼저 2번 영웅을 전투에 보낸다. 이 영웅은 보스를 세 번 공격해 체력을 12만큼 줄이고 죽는다. 그 뒤 Vasya는 3번 영웅을 보내야 하고, 3번 영웅은 즉시 보스의 체력을 6만큼 줄여 보스가 죽는다. 따라서 Vasya는 영웅을 한 명만 잃는다.
두 번째 테스트에서 Vasya는 영웅을 어떤 순서로 보내도 보스를 죽일 수 없다.
입력
입력은 여러 테스트 케이스로 이루어진다. 첫 줄에는 테스트 케이스의 수 t가 주어진다. (1 ≤ t ≤ 1000)
각 테스트 케이스는 다음과 같이 주어진다. 첫 줄에는 세 정수 n, H, A가 주어진다. 각각 Vasya가 가진 영웅 수, 보스의 체력, 보스의 공격력이다. (1 ≤ n ≤ 105, 1 ≤ H, A ≤ 109)
다음 n개 줄에는 두 정수 hi, ai가 주어진다. 각각 i번째 영웅의 체력과 공격력이다. (1 ≤ hi, ai ≤ 109)
한 입력 데이터의 모든 테스트 케이스에서 n의 합은 105을 넘지 않는다.
출력
각 테스트 케이스마다 Vasya가 보스를 물리치기 위해 잃어야 하는 영웅 수의 최솟값을 출력하거나, 보스를 물리칠 수 없다면 -1을 출력한다.