use proconio::input; use ac_library::Segtree; use ac_library::Max; fn main(){ input!{ n: usize, q: usize, a: [i32; n], qs: [(usize, i32); q], } let mut seg = Segtree::>::new(n); for i in 0..n{ seg.set(i, a[i]); } for (c, x) in qs{ if c == 1{ let i = seg.max_right(0, |v| v <= &x); if i == n{ println!("{}", -1); }else{ println!("{}", i+1); seg.set(i, i32::MIN); } }else{ let i = seg.min_left(n, |v| v <= &x); if i == 0{ println!("{}", -1); }else{ println!("{}", i); seg.set(i-1, i32::MIN); } } } }