結果
問題 | No.1583 Building Blocks |
ユーザー | shino16 |
提出日時 | 2021-05-24 18:03:19 |
言語 | Rust (1.77.0 + proconio) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,753 bytes |
コンパイル時間 | 13,156 ms |
コンパイル使用メモリ | 401,836 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-29 04:38:34 |
合計ジャッジ時間 | 14,737 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 0 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,376 KB |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
testcase_25 | AC | 1 ms
5,376 KB |
testcase_26 | WA | - |
testcase_27 | WA | - |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | WA | - |
testcase_31 | WA | - |
testcase_32 | WA | - |
testcase_33 | WA | - |
testcase_34 | AC | 1 ms
5,376 KB |
testcase_35 | WA | - |
testcase_36 | WA | - |
testcase_37 | WA | - |
testcase_38 | AC | 1 ms
5,376 KB |
testcase_39 | AC | 1 ms
5,376 KB |
testcase_40 | AC | 1 ms
5,376 KB |
testcase_41 | AC | 1 ms
5,376 KB |
testcase_42 | AC | 1 ms
5,376 KB |
testcase_43 | WA | - |
testcase_44 | WA | - |
testcase_45 | AC | 1 ms
5,376 KB |
コンパイルメッセージ
warning: variable does not need to be mutable --> src/main.rs:84:13 | 6 | scan!(n: usize, mut ws: [(u64, u64); n]); | ---------------------------------------- in this macro invocation ... 84 | let mut $var = $crate::scan_value!($iter, $t); | ----^^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default = note: this warning originates in the macro `$crate::scan` which comes from the expansion of the macro `scan` (in Nightly builds, run with -Z macro-backtrace for more info)
ソースコード
// 嘘解法のつもり use crate::lib::stdio::*; fn main() { scan!(n: usize, mut ws: [(u64, u64); n]); // (w1, s1) の下に (w2, s2) があり、w1 + s1 >= w2 + s2 であるとき、 // s2 - w1 <= s2, s2 - w1 <= s1 - w2 より、 // これら 2 つの積み木を swap しても min(s1, s2 - w1) は減少しない。 // ws.sort_unstable_by_key(|&(w, s)| w + s); // dp[X]: 条件を満たす X 個の積み木の重みの和の最小値 let mut dp = vec![u64::MAX; n + 1]; dp[0] = 0; for &(w, s) in &ws { for i in (0..n).rev() { if dp[i] <= s { dp[i + 1] = dp[i + 1].min(dp[i] + w); } } } for i in (0..=n).rev() { if dp[i] != u64::MAX { prtln!(i); return; } } } pub mod lib { pub mod stdio { pub use crate::prtln; pub use crate::scan; use std::io::{stdout, BufWriter, StdoutLock}; pub fn stdout_buf() -> BufWriter<StdoutLock<'static>> { let out = Box::leak(Box::new(stdout())); BufWriter::new(out.lock()) } #[macro_export] macro_rules! prtln { (@ $dst:expr, iter=$expr:expr) => { $crate::prtln!(@ $dst, iter=$expr, sep=" "); }; (@ $dst:expr, iter=$expr:expr, sep=$sep:expr) => { { let mut iter = $expr.into_iter(); if let Some(expr) = iter.next() { std::write!($dst, "{}", expr).unwrap(); for expr in iter { std::write!($dst, "{}{}", $sep, expr).unwrap(); } } $crate::prtln!(@ $dst, ""); } }; (@ $dst:expr, $expr:expr, no eol) => { std::write!($dst, "{}", $expr).unwrap(); }; (@ $dst:expr, $expr:expr) => { std::writeln!($dst, "{}", $expr).unwrap(); }; (@ $dst:expr, $expr:expr, $($exprs:expr),*) => { { std::write!($dst, "{} ", $expr).unwrap(); $crate::prtln!(@ $dst, $($exprs),*); } }; (new $var:ident $(,)?) => { let mut $var = stdout_buf(); }; (new $var:ident, $($t:tt)*) => { $crate::prtln!(new $var); $crate::prtln!(to $var, $($t)*); }; (to $var:ident, $($t:tt)*) => { { use std::io::Write; $crate::prtln!(@ $var, $($t)*); } }; ($($t:tt)*) => { { $crate::prtln!(new __prtln, $($t)*); std::mem::drop(__prtln); } }; } #[macro_export] macro_rules! scan { (@ $iter:expr $(,)?) => {}; (@ $iter:expr, mut $var:ident : $t:tt $($r:tt)*) => { #[allow(non_snake_case)] let mut $var = $crate::scan_value!($iter, $t); $crate::scan!(@ $iter $($r)*) }; (@ $iter:expr, $var:ident : $t:tt $($r:tt)*) => { #[allow(non_snake_case)] let $var = $crate::scan_value!($iter, $t); $crate::scan!(@ $iter $($r)*) }; (@ $iter:expr, $pat:pat in $t:tt $($r:tt)*) => { let $pat = $crate::scan_value!($iter, $t); $crate::scan!(@ $iter $($r)*) }; (from $s:expr, $($r:tt)*) => { $crate::scan!(@ $s, $($r)*); }; (new $var:ident, $($r:tt)*) => { let mut __input = String::new(); std::io::Read::read_to_string(&mut std::io::stdin(), &mut __input).unwrap(); let $var = &mut __input.split_ascii_whitespace(); $crate::scan!(@ $var, $($r)*); }; ($($r:tt)*) => { $crate::scan!(new __scan, $($r)*); }; } #[macro_export] macro_rules! scan_value { ($iter:expr, ( $($t:tt),* )) => { ( $($crate::scan_value!($iter, $t)),* ) }; ($iter:expr, [ $t:tt ; $len:expr ]) => { (0..$len).map(|_| $crate::scan_value!($iter, $t)).collect::<Vec<_>>() }; ($iter:expr, bytes) => { $iter.next().unwrap().as_bytes() }; ($iter:expr, usize1) => { $crate::scan_value!($iter, usize) - 1 }; ($iter:expr, $t:ty) => { $iter.next().unwrap().parse::<$t>().unwrap() }; } } // mod stdio } // mod lib