結果

問題 No.3422 Sazanka's hobby
コンテスト
ユーザー mentos_grape
提出日時 2026-01-11 14:05:38
言語 Python3
(3.14.2 + numpy 2.4.0 + scipy 1.16.3)
結果
AC  
実行時間 1,062 ms / 2,000 ms
コード長 2,087 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 603 ms
コンパイル使用メモリ 20,932 KB
実行使用メモリ 196,076 KB
最終ジャッジ日時 2026-01-11 14:05:48
合計ジャッジ時間 9,247 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 13
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys

def solve():
    # 高速な入出力のために sys.stdin.read を使用
    input_data = sys.stdin.read().split()
    
    if not input_data:
        return

    iterator = iter(input_data)
    
    try:
        N = int(next(iterator))
        M = int(next(iterator))
        
        # 入力データのパース
        # a_i, b_i のリストを作成
        # data[2]から始まる要素のうち、偶数番目がa、奇数番目がb
        # メモリ効率と速度のためにスライスを使用
        a_list = []
        b_list = []
        
        # 入力配列全体からaとbを抽出
        # input_data[2:] の範囲でステップ2で取得
        all_params = input_data[2:]
        a_list = map(int, all_params[0::2])
        b_list = map(int, all_params[1::2])

        # 締め切り(何日目の朝までにやるべきか)を計算
        deadlines = []
        for a, b in zip(a_list, b_list):
            # 猶予日数 = (M - a) // b
            # 締め切り = 猶予日数 + 1
            # 植物は (M - a) // b 回目の夜まではセーフ。
            # その次の夜にアウトになるので、その日の朝までに狩る必要がある。
            t = (M - a) // b + 1
            deadlines.append(t)
        
        # 締め切りが早い順にソート
        deadlines.sort()
        
        ans = 0
        
        # 各タイミングで必要な k を計算し、最大値を取る
        for i, deadline in enumerate(deadlines):
            # i+1 本の植物を deadline 日目までに処理する必要がある
            # k * deadline >= i + 1
            # k >= (i + 1) / deadline
            # k = ceil((i + 1) / deadline)
            # 整数演算での切り上げ: (numerator + denominator - 1) // denominator
            
            needed_k = (i + 1 + deadline - 1) // deadline
            
            if needed_k > ans:
                ans = needed_k
                
        print(ans)
        
    except StopIteration:
        return

if __name__ == '__main__':
    solve()
0