2023-07-15 ABC310 に参加した / ABC032 C を解いた
ABC310 に参加した。 1267 → 1267 (±0) 。 D 問題で変にハマって飛ばしたものの、 E を解けず、戻ってきて時間ギリギリで D を解いた。
https://atcoder.jp/users/bouzuya/history/share/abc310
うーん……。
『水星の魔女』を観た。
- 列 (AtCoder Beginner Contest 032:C問題)
https://atcoder.jp/contests/abc032/tasks/abc032_c
- https://atcoder.jp/contests/abc032/submissions/43566108
- 尺取り法
l
r
をそれぞれ保持して[l, r)
の積がK
以下かを判定しr - l + 1
の最大を求める0
がS
に含まれる場合は答えがN
になる点に注意- ↑の考慮を忘れると
0
除算が起きる
use proconio::input;
fn main() {
input! {
n: usize,
k: usize,
s: [usize; n],
};
if s.iter().any(|&s_i| s_i == 0) {
println!("{}", n);
return;
}
let mut product = 1_usize;
let mut max = 0_usize;
let mut r = 0;
for l in 0..n {
while (r < n) && (product.checked_mul(s[r]).is_some() && product * s[r] <= k) {
product *= s[r];
r += 1;
}
max = max.max(r - l);
if r == l {
r += 1;
} else {
product /= s[l];
}
}
let ans = max;
println!("{}", ans);
}
今日のコミット。