blog.bouzuya.net

2023-09-04 PAST #8 J を解いた

今日から AtCoder の過去コンテストも Rust 1.70.0 に切り替わったようだ。まだぼくのコードは対応していない。 cargo-compete は v0.10.6 に更新して compete.toml[submit] を README にあるとおり、↓と変更すれば提出できるようになった。

[submit]
kind = "file"
path = "{{ src_path }}"
language_id = "5054"

cargo-atcoder は最近のコンテストに参加できていることから分かるように設定を変更済み。 PAST 本が終わるまではこのまま進めるつもりでいる。


shapez のためにキーボードとマウスを買った。


use proconio::input;
use segtree::*;

fn main() {
    input! {
        n: usize,
        q: usize,
        tk: [(usize, usize); q],
    }
    let mut segtree = Segtree::<Additive<usize>>::new(n + 1);
    for (t, k) in tk {
        match t {
            1 => {
                let i = if k <= n { n + 1 - k } else { k - n };
                let ans = if (segtree.prod(i - 1..n) + if k > n { 1 } else { 0 }) % 2 == 0 {
                    n + 1 - i
                } else {
                    n + i
                };
                println!("{}", ans);
            }
            2 => {
                segtree.set(k - 1, segtree.get(k - 1) + 1);
            }
            _ => unreachable!(),
        }
    }
}

今日のコミット。