Module c
Expand description
ยงABC 415 C - Mixture
refs: https://atcoder.jp/contests/abc415/tasks/abc415_c
use std::collections::HashSet;
use proconio::{input, marker::Chars};
fn main() {
input! { t: usize }
for _ in 0..t {
solve();
}
}
fn solve() {
input! { n: usize, s: Chars }
let mut layers = vec![HashSet::new(); n + 1];
let ln = (0..n).map(|i| 1 << i).collect::<Vec<_>>();
layers[0].insert(0);
for i in 1..=n {
let prev_layer = &layers[i - 1];
let mut current_layer = HashSet::new();
for &x in prev_layer {
for y in 0..n {
if x & ln[y] != 0 {
continue;
}
if s[(x | ln[y]) - 1] == '0' {
current_layer.insert(x | ln[y]);
}
}
}
layers[i] = current_layer;
}
if layers[n].is_empty() {
println!("No");
} else {
println!("Yes");
}
}