aizu_online_judge/dsl/
dsl_3_a.rs

1use competitive::prelude::*;
2#[doc(no_inline)]
3pub use competitive::{algebra::AdditiveOperation, data_structure::QueueAggregation};
4
5#[verify::aizu_online_judge("DSL_3_A")]
6pub fn dsl_3_a(reader: impl Read, mut writer: impl Write) {
7    let s = read_all_unchecked(reader);
8    let mut scanner = Scanner::new(&s);
9    scan!(scanner, n, s: u64, a: [u64]);
10    let mut que = QueueAggregation::<AdditiveOperation<_>>::new();
11    let mut ans = usize::MAX;
12    for a in a.take(n) {
13        que.push(a);
14        while que.fold_all() >= s {
15            ans = ans.min(que.len());
16            que.pop();
17        }
18    }
19    writeln!(writer, "{}", if ans == usize::MAX { 0 } else { ans }).ok();
20}