12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt(), m = scanner.nextInt();
- int[] shoot = new int[n];
- for (int i = 0; i < n; i++) {
- shoot[i] = scanner.nextInt();
- }
- int[] map = new int[m+1];
- int min = -1, cnt = 0;
- int l = 0, r = 0;
- for (; r < n; r++) {
- if (cnt == m) {
- for (; l <= r && cnt == m; l++) {
- if (min == -1 || r-l < min) {
- min = r - l;
- }
- int c = shoot[l];
- if (c != 0) {
- map[c]--;
- if (map[c] == 0) {
- cnt--;
- }
- }
- }
- }
- int c = shoot[r];
- if (c != 0) {
- if (map[c] == 0) {
- cnt++;
- }
- map[c]++;
- }
- }
- if (cnt == m && (min == -1 || r-l < min)) {
- min = r - l;
- }
- System.out.println(min);
- scanner.close();
- }
- }
|