12345678910111213141516171819202122232425262728293031323334353637383940 |
- package main
- import "fmt"
- func main() {
- var n, m int
- fmt.Scan(&n, &m)
- shoot := make([]int, n)
- for i := range shoot {
- fmt.Scan(&shoot[i])
- }
- min, cnt := -1, 0
- ma := make([]int, m+1)
- l, r := 0, 0
- for ; r < n; r++ {
- if cnt == m {
- for ; l <= r && cnt == m; l++ {
- if min == -1 || r-l < min {
- min = r - l
- }
- if c := shoot[l]; c != 0 {
- ma[c]--
- if ma[c] == 0 {
- cnt--
- }
- }
- }
- }
- if c := shoot[r]; c != 0 {
- if ma[c] == 0 {
- cnt++
- }
- ma[c]++
- }
- }
- if cnt == m && r-l < min {
- min = r - l
- }
- fmt.Println(min)
- }
|