Module c

Expand description

ยงABC 397 C - Variety Split Easy

refs: https://atcoder.jp/contests/abc397/tasks/abc397_c

use std::collections::HashSet;

use proconio::input;

fn main() {
    input! {
        n: usize,
        a: [usize; n],
    }

    let mut forward_counts = Vec::new();
    let mut backward_counts = Vec::new();

    let mut s = HashSet::new();
    for ai in a.iter() {
        s.insert(ai);
        forward_counts.push(s.len());
    }
    s.clear();
    for ai in a.iter().rev() {
        s.insert(ai);
        backward_counts.push(s.len());
    }
    backward_counts.reverse();

    let mut ans = 0;
    for i in 0..(n - 1) {
        ans = ans.max(forward_counts[i] + backward_counts[i + 1]);
    }

    println!("{ans}");
}