Module c
Expand description
§ABC 395 C - Shortest Duplicate Subarray
refs: https://atcoder.jp/contests/abc395/tasks/abc395_c
同一文字間の距離のうち最短のものを出力すればよい.
use std::collections::HashMap;
const INF: usize = 1e+7 as usize;
use proconio::input;
fn main() {
input! {
n: usize,
a: [usize; n],
}
let mut pos_map = HashMap::<usize, Vec<usize>>::new();
for (idx, ai) in a.iter().enumerate() {
pos_map.entry(*ai).or_default().push(idx);
}
let ans = pos_map.iter().fold(INF, |acc, (_, values)| {
let mut current = acc;
for i in 0..(values.len() - 1) {
current = current.min(values[i + 1] - values[i] + 1);
}
current
});
if ans == INF {
println!("-1");
} else {
println!("{ans}");
}
}