Module d

Expand description

§ABC 394 D - Colorful Bracket Sequence

refs: https://atcoder.jp/contests/abc394/tasks/abc394_d

Stack を使ってやると, (), [], <>の部分文字列の削除を簡易に実行できる. マッチするカッコを随時削除していき, 最終的にすべてのカッコがマッチして消滅していればカラフル括弧列になる.

use proconio::{input, marker::Chars};

fn main() {
    input! {
        mut s: Chars
    }

    let mut buf = Vec::new();

    while !s.is_empty() {
        match (s.last(), buf.last()) {
            (Some('('), Some(')')) | (Some('['), Some(']')) | (Some('<'), Some('>')) => {
                s.pop();
                buf.pop();
            }
            (Some(&c), _) => {
                s.pop();
                buf.push(c);
            }
            (None, _) => break,
        }
    }

    if buf.is_empty() {
        println!("Yes");
    } else {
        println!("No");
    }
}