use std::collections::BTreeMap; use std::cmp; const P: i32 = 5; const a: [i32; 5] = [1, 8, 8, 8, 1]; fn main() { let mut all: Vec<i32> = Vec::new(); for i in 0.. { if !(i < P) { break; } if !all.contains(&a[i as usize]) { all.push(a[i as usize]); } } let n = all.len(); let s = 0; let t = 0; let num = 0; let mut count = BTreeMap::new(); let res = P; loop { while ( t < P && num < n) { if(count[a[t++]]++ == 0) { num += 1; } } if (num < n) { break; } res = cmp::min(res, t - s); if (--count[a[s++]] == 0) { num --; } } println!("{}", res); }

