题解 | #合唱队#
合唱队
https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4
use std::io::{self, *};
fn maxLeft(q: &Vec<usize>, res: &mut Vec<usize>) {
let mut temp = vec![usize::MAX; q.len()];
let mut pos = 0;
for i in q {
match temp.as_slice().binary_search(i) {
Ok(p) => pos = p,
Err(p) => pos = p,
}
temp[pos] = *i;
res.push(pos)
}
}
fn main() {
let stdin = io::stdin();
let mut line = String::new();
stdin.read_line(&mut line);
let n = line.trim().parse::<usize>().unwrap();
line.clear();
stdin.read_line(&mut line);
let mut q: Vec<usize> = line.split(" ").map(|i| i.trim().parse::<usize>().unwrap()).collect();
let mut ml = vec![];
let mut mr = vec![];
maxLeft(&q, &mut ml);
q.reverse();
maxLeft(&q, &mut mr);
mr.reverse();
let max = mr.iter().zip(ml.iter()).max_by_key(|i| *(i.0) + *(i.1)).unwrap();
println!("{}", n - max.0 - max.1 - 1)
}

