1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 二分探索メニュー応用編(言語選択)
  4. 問題一覧 Java編
  5. 従業員

二分探索メニュー応用編のサムネイル
従業員 (paizaランク A 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

あなたは N 人の従業員を雇っていて、i 番目の従業員の作業効率は A_i です。つまり、1 時間に作業量 A_i だけ作業をおこなうことができます。
また、現在 i 番目の従業員に割り当てられている作業量は B_i です。

近頃忙しくなったあなたは、各従業員に同じ作業量の作業を追加で割り当てることにしました。
ただし、予算の都合上、従業員の作業時間の合計が K 以下になるようにしたいです。
また、割り当てる作業量は非負整数 (0 以上の整数) にしたいです。

そのような条件の下で、各従業員に追加で割り当てることができる作業量の最大値を求めてください。
ただし、各従業員の作業時間が端数になった場合は、それぞれ 1 時間単位で切り上げるものとします。

入力される値

N K
A_1 B_1
A_2 B_2
...
A_N B_N


・ 1 行目に、従業員の人数を表す整数 N, 作業時間の上限 K が半角スペース区切りで与えられます。
・ 続く N 行に、整数の組 A_i, B_i が半角スペース区切りで与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

問題の答えを、1 行に整数で出力してください。

末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・ 入力はすべて整数
・ 1 ≦ N ≦ 200,000 = 2 × 10^5
・ 1 ≦ K ≦ 1,000,000,000,000 = 10^12
・ 1 ≦ A_i, B_i ≦ 1,000,000 = 10^6
・ 現在の作業時間の合計は K 以下である

入力例1

2 100
20 1000
30 1000

出力例1

200

問題一覧へ戻る

ページの先頭へ戻る