library_checker/tree/cartesian_tree.rs
1use competitive::algorithm::CartesianTree;
2use competitive::prelude::*;
3
4#[verify::library_checker("cartesian_tree")]
5pub fn cartesian_tree(reader: impl Read, writer: impl Write) {
6 prepare_io!(reader, writer);
7 sc!(n, a: [i32; n]);
8 let ct = CartesianTree::new(&a);
9 pp!(@it ct.parents.iter().map(|&p| if p == !0 { ct.root } else { p }));
10}