고용

시간 제한1초메모리 제한128 MB

요약
실수 배율 k를 하나 정하고, 고용한 각자의 임금 Q_i*k가 최저 임금 S_i 이상이면서 총임금이 예산 W 이하가 되도록 지원자를 최대한 많이 뽑는 문제다.
난이도

어려움10점 중 8점

유형
정렬, 그리디, 이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

재현이는 초고층 건물 "제2사과타워"를 짓기 위해 노동자를 고용하려고 한다. 11번부터 NN번까지 총 NN명이 지원했으며, ii번째 노동자는 최저임금 SiS_i와 건설 자격증 레벨 QiQ_i를 가지고 있다. 따라서 ii번째 노동자를 고용하려면 그에게 SiS_i 이상의 임금을 지급해야 한다.

정부는 건설 자격증을 장려하기 위해, 고용된 모든 노동자의 임금이 각자의 자격증 레벨에 정비례하도록 하는 규정을 만들었다. 즉, 하나의 실수 계수 kk를 정하면 고용된 노동자 ii는 정확히 Qi×kQ_i \times k의 임금을 받는다. 임금은 정수가 아닌 실수여도 된다. 고용한 모든 노동자에 대해 Qi×k≥SiQ_i \times k \ge S_i가 성립해야 하므로, 고용한 노동자 전원의 최저임금 조건이 만족되도록 kk를 충분히 크게 잡아야 한다.

재현이는 WW달러를 가지고 있다. 자격증 레벨에는 관심이 없고 건물을 최대한 빨리 짓고 싶으므로, 지급하는 임금의 총합이 WW 이하가 되도록 하면서 최대한 많은 노동자를 고용하려고 한다. 고용할 수 있는 노동자 수의 최댓값을 구하여라.

입력

표준 입력으로 다음 데이터가 주어진다.

  • 첫째 줄에 노동자의 수 NN과 가진 돈 WW가 공백으로 구분되어 주어진다.
  • 이어지는 NN개의 줄 중 ii번째 줄에는 ii번째 노동자의 최저임금 SiS_i와 자격증 레벨 QiQ_i가 공백으로 구분되어 주어진다.

출력

가진 돈 안에서 고용할 수 있는 노동자 수의 최댓값을 정수 하나로 출력한다.

제한

  • 1≤N≤500,0001 \le N \le 500{,}000 (지원한 노동자의 수)
  • 1≤Si≤20,0001 \le S_i \le 20{,}000 (노동자 ii의 최저임금)
  • 1≤Qi≤20,0001 \le Q_i \le 20{,}000 (노동자 ii의 자격증 레벨)
  • 1≤W≤10,000,000,0001 \le W \le 10{,}000{,}000{,}000 (사용할 수 있는 돈)
  • 입력으로 주어지는 모든 수는 정수이다.

예제3

  1. 예제 1

    입력
    4 100
    5 1000
    10 100
    8 10
    20 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3 4
    1 2
    1 3
    1 3
    
    예상 출력
    3
    
  3. 예제 3

    입력
    3 40
    10 1
    10 2
    10 3
    
    예상 출력
    2