Main.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner scanner = new Scanner(System.in);
  5. int n = scanner.nextInt(), m = scanner.nextInt();
  6. int[] shoot = new int[n];
  7. for (int i = 0; i < n; i++) {
  8. shoot[i] = scanner.nextInt();
  9. }
  10. int[] map = new int[m+1];
  11. int min = -1, cnt = 0;
  12. int l = 0, r = 0;
  13. for (; r < n; r++) {
  14. if (cnt == m) {
  15. for (; l <= r && cnt == m; l++) {
  16. if (min == -1 || r-l < min) {
  17. min = r - l;
  18. }
  19. int c = shoot[l];
  20. if (c != 0) {
  21. map[c]--;
  22. if (map[c] == 0) {
  23. cnt--;
  24. }
  25. }
  26. }
  27. }
  28. int c = shoot[r];
  29. if (c != 0) {
  30. if (map[c] == 0) {
  31. cnt++;
  32. }
  33. map[c]++;
  34. }
  35. }
  36. if (cnt == m && (min == -1 || r-l < min)) {
  37. min = r - l;
  38. }
  39. System.out.println(min);
  40. scanner.close();
  41. }
  42. }