結果
問題 | No.2844 Birthday Party Decoration |
ユーザー | Yukino DX. |
提出日時 | 2024-08-23 22:59:26 |
言語 | Rust (1.77.0 + proconio) |
結果 |
AC
|
実行時間 | 5 ms / 2,000 ms |
コード長 | 1,165 bytes |
コンパイル時間 | 14,096 ms |
コンパイル使用メモリ | 399,608 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-08-23 22:59:41 |
合計ジャッジ時間 | 14,294 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,812 KB |
testcase_01 | AC | 5 ms
6,812 KB |
testcase_02 | AC | 5 ms
6,812 KB |
testcase_03 | AC | 5 ms
6,944 KB |
testcase_04 | AC | 5 ms
6,940 KB |
ソースコード
use std::collections::BTreeSet; use proconio::input; fn main() { // const D:usize=60; input! { t:usize, } for _ in 0..t { input! { n:usize, x:usize, c:[usize;n], } let mut xy = vec![]; for i in 0..n { if x & (1 << c[i]) != 0 { continue; } let pow2 = 2usize.pow(c[i] as u32 + 1); let rem = x % pow2; let x = if x < pow2 { INF } else { rem + 1 }; let y = pow2 / 2 - rem; xy.push((x, y)); } if xy.is_empty() { println!("0"); continue; } xy.sort_by(|a, b| b.0.cmp(&a.0)); // println!("xy:{:?}",xy); let mut ans = INF; let mut bt = BTreeSet::new(); for &(x, y) in xy.iter() { let maxy = *bt.iter().last().unwrap_or(&0); if x != INF { ans = ans.min(2 * (x + maxy)); } bt.insert(y); } ans = ans.min(2 * *bt.iter().last().unwrap()); println!("{}", ans); } } const INF: usize = std::usize::MAX;