Skip to main content

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}