2023-03-24 ABC278 の A, B, C, D を解いた
ABC278 : AtCoder Beginner Contest 278 の A, B, C, D を解いた。
F を解こうとしたが、 E でハマってしまって解けなかった。
- A - Shift
https://atcoder.jp/contests/abc278/tasks/abc278_a
- 提出: https://atcoder.jp/contests/abc278/submissions/39992596
 - 指示通りにシミュレートすれば良い
 
 - B - Misjudge the Time
https://atcoder.jp/contests/abc278/tasks/abc278_b
- 提出: https://atcoder.jp/contests/abc278/submissions/39992802
 - 1 分ずつ進めて指示通りに確かめれば良い
 
 - C - FF
https://atcoder.jp/contests/abc278/tasks/abc278_c
- 提出: https://atcoder.jp/contests/abc278/submissions/39992962
 N <= 10^9なので HashMap と HashSet で管理する- あとは指示通りにシミュレートすれば良い
 
 - D - All Assign Point Add
https://atcoder.jp/contests/abc278/tasks/abc278_d
- 提出: https://atcoder.jp/contests/abc278/submissions/39993552
 - 1 のクエリを単純にやると間に合わない
 - 1 のクエリごとに HashMap と既定値をリセットし、 2 のクエリでは HashMap に追加すれば良い既定値 + x で
 
 
use std::collections::HashMap;
use proconio::{input, marker::Usize1};
fn main() {
    input! {
        n: usize,
        a: [usize; n],
        q: usize,
    };
    let mut base = 0_usize;
    let mut map = HashMap::new();
    for (i, a_i) in a.iter().copied().enumerate() {
        map.insert(i, a_i);
    }
    for _ in 0..q {
        input! {
            t: usize,
        }
        match t {
            1 => {
                input! {
                    x: usize,
                }
                base = x;
                map.clear();
            }
            2 => {
                input! {
                    i: Usize1,
                    x: usize,
                }
                *map.entry(i).or_insert(base) += x;
            }
            3 => {
                input! {
                    i: Usize1,
                }
                println!("{}", *map.get(&i).unwrap_or(&base));
            }
            _ => unreachable!(),
        }
    }
}
今日のコミット。