結果

問題 No.1645 AB's abs
ユーザー Strorkis
提出日時 2021-08-13 21:48:31
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 3 ms / 2,000 ms
コード長 2,450 bytes
コンパイル時間 12,911 ms
コンパイル使用メモリ 380,504 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-10-03 18:22:28
合計ジャッジ時間 13,873 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 36
権限があれば一括ダウンロードができます

ソースコード

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

pub mod io {
use std::io::{BufRead, ErrorKind};
pub fn scan<R: BufRead>(r: &mut R) -> Vec<u8> {
let mut res = Vec::new();
loop {
let buf = match r.fill_buf() {
Ok(buf) => buf,
Err(e) if e.kind() == ErrorKind::Interrupted => continue,
Err(e) => panic!("{}", e),
};
let (done, used, buf) = {
match buf.iter().position(u8::is_ascii_whitespace) {
Some(i) => (i > 0 || res.len() > 0, i + 1, &buf[..i]),
None => (buf.is_empty(), buf.len(), buf),
}
};
res.extend_from_slice(buf);
r.consume(used);
if done { return res; }
}
}
#[macro_export]
macro_rules! scan {
($r:expr, [$t:tt; $n:expr]) => {
(0..$n).map(|_| scan!($r, $t)).collect::<Vec<_>>()
};
($r:expr, [$t:tt]) => {
scan!($r, [$t; scan!($r, usize)])
};
($r:expr, ($($t:tt),*)) => {
($(scan!($r, $t)),*)
};
($r:expr, Usize1) => {
scan!($r, usize) - 1
};
($r:expr, Bytes) => {
io::scan($r)
};
($r:expr, String) => {
String::from_utf8(scan!($r, Bytes)).unwrap()
};
($r:expr, $t:ty) => {
scan!($r, String).parse::<$t>().unwrap()
};
}
#[macro_export]
macro_rules! input {
($($($v:ident)* : $t:tt),* $(,)?) => {
let stdin = std::io::stdin();
let ref mut reader = std::io::BufReader::new(stdin.lock());
$(let $($v)* = scan!(reader, $t);)*
};
}
}
const MOD: u64 = 998_244_353;
const MAX: usize = 10_000;
fn main() {
input! {
n: usize,
a: [usize; n],
}
let mut dp = vec![0; MAX + 1];
dp[0] = 1;
for a in a {
let mut ndp = vec![0; MAX + 1];
for (i, dp) in dp.iter().enumerate() {
if *dp == 0 {
continue;
}
let ni = a + i;
ndp[ni] += dp;
ndp[ni] %= MOD;
let ni = if a < i { i - a } else { a - i };
ndp[ni] += dp;
ndp[ni] %= MOD;
}
dp = ndp;
}
let ans = {
dp.iter()
.enumerate()
.fold(0, |acc, (i, dp)| (acc + (i as u64 * dp) % MOD) % MOD)
};
println!("{}", ans);
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0