結果

問題 No.472 平均順位
ユーザー ngtkana
提出日時 2023-04-06 00:37:37
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 430 ms / 2,000 ms
コード長 2,226 bytes
コンパイル時間 14,985 ms
コンパイル使用メモリ 401,484 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-10-02 03:29:31
合計ジャッジ時間 14,798 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 16
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

use std::{
convert::TryFrom,
io::{stdin, BufRead},
iter::once,
u64::MAX,
};
use crate::cmpmore::CmpMore;
fn main() {
let stdin = stdin();
let mut stdin = stdin.lock().lines().map(Result::unwrap);
let [n, p] = <[_; 2]>::try_from(
stdin
.next()
.unwrap()
.split_whitespace()
.map(|x| x.parse::<usize>().unwrap())
.collect::<Vec<_>>()
.as_slice(),
)
.unwrap();
let mut dp = vec![MAX; p + 1];
dp[0] = 0;
for _ in 0..n {
let a = <[_; 4]>::try_from(
stdin
.next()
.unwrap()
.split_whitespace()
.map(|x| x.parse::<u64>().unwrap())
.chain(once(1))
.collect::<Vec<_>>()
.as_slice(),
)
.unwrap();
let mut swp = vec![MAX; p + 1];
for i in (0..=p).rev() {
for (w, &v) in a.iter().enumerate() {
if i + w <= p {
swp[i + w].change_min(dp[i].saturating_add(v));
}
}
}
dp = swp;
}
let ans = dp[p] as f64 / n as f64;
println!("{}", ans);
}
// cmpmore {{{
#[allow(dead_code)]
mod cmpmore {
pub fn change_min<T: PartialOrd>(lhs: &mut T, rhs: T) {
if *lhs > rhs {
*lhs = rhs;
}
}
pub fn change_max<T: PartialOrd>(lhs: &mut T, rhs: T) {
if *lhs < rhs {
*lhs = rhs;
}
}
#[macro_export]
macro_rules! change_min {
($lhs:expr, $rhs:expr) => {
let rhs = $rhs;
let lhs = $lhs;
$crate::cmpmore::change_min(lhs, rhs);
};
}
#[macro_export]
macro_rules! change_max {
($lhs:expr, $rhs:expr) => {
let rhs = $rhs;
let lhs = $lhs;
$crate::cmpmore::change_max(lhs, rhs);
};
}
pub trait CmpMore: PartialOrd + Sized {
fn change_min(&mut self, rhs: Self) {
change_min(self, rhs)
}
fn change_max(&mut self, rhs: Self) {
change_max(self, rhs)
}
}
impl<T: PartialOrd + Sized> CmpMore for T {}
}
// }}}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0