Module d

Expand description

ยงABC 406 D - Garbage Removal

refs: https://atcoder.jp/contests/abc406/tasks/abc406_d

use std::collections::HashSet;

use proconio::input;

fn main() {
    input! {
        h: usize, w: usize, n: usize,
    }

    let mut px = vec![vec![]; h + 1];
    let mut py = vec![vec![]; w + 1];

    for i in 0..n {
        input! { x: usize, y: usize }
        px[x].push(i);
        py[y].push(i);
    }

    let mut ux = vec![false; h + 1];
    let mut uy = vec![false; w + 1];
    let mut used = vec![false; n];

    input! { q: usize };
    for _ in 0..q {
        input! { t: usize, z: usize }

        match t {
            1 if ux[z] => println!("0"),
            2 if uy[z] => println!("0"),
            1 => {
                println!("{}", px[z].iter().filter(|&&i| !used[i]).count());

                px[z].iter().for_each(|&i| used[i] = true);
                ux[z] = true;
            }
            2 => {
                println!("{}", py[z].iter().filter(|&&i| !used[i]).count());

                py[z].iter().for_each(|&i| used[i] = true);
                uy[z] = true;
            }
            _ => unreachable!(),
        }
    }
}