Module c

Expand description

ยงABC 398 C - Uniqueness

refs: https://atcoder.jp/contests/abc398/tasks/abc398_c

use std::collections::HashMap;

use proconio::input;

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

    let maps = value_map(&a);
    let unique = maps
        .iter()
        .filter(|(_, v)| v.len() == 1)
        .collect::<Vec<_>>();

    let max_item = unique.iter().max_by_key(|(k, _)| k);
    let max_person = max_item.and_then(|(_, v)| v.iter().max());

    if let Some(ans) = max_person {
        println!("{ans}");
    } else {
        println!("-1");
    }
}

fn value_map(arr: &[usize]) -> HashMap<usize, Vec<usize>> {
    let mut counts = HashMap::new();
    for (i, &x) in arr.iter().enumerate() {
        counts.entry(x).or_insert(vec![]).push(i + 1);
    }
    counts
}