비상 식량
시간 제한1초메모리 제한128 MB
용량과 유통기한이 있는 상자를 골라 1일차부터 하루 한 단위씩 먹을 때, 도달할 수 있는 마지막 날과 필요한 최소 상자 수를 구한다.
문제
다가올 종말에 대비하여 지하 벙커를 지었습니다. 이제 이 벙커를 식량과 각종 비상 식량으로 채워, 최대한 오래 버틸 수 있도록 해야 합니다.
비상 식량은 상자 단위로 들어오며, 모든 상자의 크기는 동일합니다. 각 상자는 두 가지 속성을 가집니다. (1) 며칠분(일분)의 식량으로 소비할 수 있는지, (2) 종말 이후 며칠이 지나면 상해서 더 이상 먹을 수 없는지(유통기한 ).
첫째 날(일)에 첫 번째 분량을 반드시 먹어야 하며, 그 뒤로는 매일 정확히 한 분량씩 거르지 않고 먹어야 합니다. 유통기한이 이고 일분을 담은 상자는 서로 다른 최대 개의 날에 소비할 수 있으며, 그 날들은 모두 일 이하여야 합니다. 예를 들어 유통기한이 이고 일분인 상자는 일에, 또는 일에, 또는 일에, 심지어 일 하루에만(상자를 일부만 소비한 채) 먹을 수 있습니다.
하루도 거르지 않고 식량을 계속 먹을 수 있는 마지막 날 를 알고 싶습니다. 또한 모든 상자의 크기가 같아 벙커 공간을 낭비하고 싶지 않으므로, 일까지 버티는 데 필요한 상자의 최소 개수 도 알고 싶습니다.
입력
첫 줄에는 데이터 집합의 개수 가 주어집니다. 이어서 개의 데이터 집합이 각각 다음 형식으로 주어집니다.
각 데이터 집합의 첫 줄에는 벙커에 넣을 후보 비상 식량 상자의 개수 ()이 주어집니다. 그다음 각각 개의 정수가 담긴 두 줄이 이어집니다. 첫째 줄의 번째 정수는 상자 가 버티게 해 주는 일수 (즉 소비할 수 있는 분량)이고, 둘째 줄의 번째 정수는 상자 의 유통기한 입니다. 모든 와 는 이상 이하입니다.
출력
각 데이터 집합마다 먼저 그 번호 를 사용하여 Data Set x:를 한 줄에 출력합니다. 다음 줄에는 두 정수 와 를 공백 하나로 구분하여 출력합니다. 여기서 는 식량을 먹을 수 있는 마지막 날이고, 는 일에 도달하는 데 필요한 상자의 최소 개수입니다. 각 데이터 집합 뒤에는 빈 줄을 하나 출력합니다.