library_checker/datastructure/
line_add_get_min.rs

1#[doc(no_inline)]
2pub use competitive::data_structure::LineSet;
3use competitive::prelude::*;
4
5#[verify::library_checker("line_add_get_min")]
6pub fn line_add_get_min(reader: impl Read, mut writer: impl Write) {
7    let s = read_all_unchecked(reader);
8    let mut scanner = Scanner::new(&s);
9    scan!(scanner, n, q);
10    let mut cht = LineSet::new();
11    for (a, b) in scanner.iter::<(i64, i64)>().take(n) {
12        cht.insert(a, b);
13    }
14    for _ in 0..q {
15        scan!(scanner, ty);
16        if ty == 0 {
17            scan!(scanner, a: i64, b: i64);
18            cht.insert(a, b);
19        } else {
20            scan!(scanner, q: i64);
21            writeln!(writer, "{}", cht.query_min(q).unwrap()).ok();
22        }
23    }
24}