結果
問題 |
No.3297 Bake Cookies
|
ユーザー |
👑 |
提出日時 | 2025-10-05 14:49:25 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 96 ms / 2,000 ms |
コード長 | 885 bytes |
コンパイル時間 | 12,397 ms |
コンパイル使用メモリ | 400,272 KB |
実行使用メモリ | 7,716 KB |
最終ジャッジ日時 | 2025-10-05 14:49:51 |
合計ジャッジ時間 | 15,418 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 27 |
ソースコード
use std::ops::{Add, Div, Sub}; use proconio::{input, marker::Usize1}; fn solve() -> u64 { input! { n: usize, m: usize, t: u64, a: [Usize1; m], } let mut b = vec![0; n]; for &ai in a.iter() { b[ai] += 1; } binary_search_integer(0, 10u64.pow(18), |x| { let mut ex = 0; let mut em = 0; for &bi in b.iter() { if bi <= x { em += (x - bi) / t; } else { ex += bi - x; } } ex > em }) + 1 } fn main() { let ans = solve(); println!("{}", ans); } fn binary_search_integer<T>(left: T, right: T, pred: impl Fn(T) -> bool) -> T where T: Add<Output = T> + Sub<Output = T> + Div<Output = T> + PartialOrd + From<u64> + Copy, { let mut l = left; let mut r = right; while r - l > 1.into() { let m = l + (r - l) / 2.into(); if pred(m) { l = m; } else { r = m; } } l }