結果
| 問題 | 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 |
| 記録 | |
| コンパイル時間 | 603 ms |
| コンパイル使用メモリ | 20,932 KB |
| 実行使用メモリ | 196,076 KB |
| 最終ジャッジ日時 | 2026-01-11 14:05:48 |
| 合計ジャッジ時間 | 9,247 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 13 |
ソースコード
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()
mentos_grape