dmestanza369

AER338 - MLE

Dec 1st, 2021
433
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.ArrayList;
  2. import java.util.HashSet;
  3. import java.util.Scanner;
  4.  
  5. public class AER338{ //MEMORY LIMIT EXCEEDED
  6.     public static void main(String[] args){
  7.         Scanner sc = new Scanner(System.in);
  8.         while (sc.hasNext()){
  9.             int n = sc.nextInt();
  10.             int k = sc.nextInt();
  11.             sc.nextLine();
  12.             ArrayList<Integer> exams = new ArrayList<>();
  13.             String[] exStr = sc.nextLine().split(" ");
  14.             for (int i = 0; i < exStr.length; i++) {
  15.                 exams.add(Integer.parseInt(exStr[i]));
  16.             }
  17.  
  18.             HashSet<Integer> all = new HashSet<>(exams);
  19.             int ct = n - all.size();
  20.             int cd = 0;
  21.             HashSet<Integer> memory = new HashSet<>(k+1);
  22.             boolean noCopy = true;
  23.             for (int i = 0; i < n; i++){
  24.                 noCopy = memory.add(exams.get(i));
  25.                 if (i >= k){
  26.                     if (!noCopy) cd++;
  27.                    
  28.                     // Revisión de memoria
  29.                     if (exams.get(i-k) != exams.get(i)){ // Por si coincidieran y ya está dentro
  30.                         memory.remove(exams.get(i-k));
  31.                     }
  32.                 }
  33.             }
  34.             System.out.println(ct + " " + cd);
  35.         }
  36.         sc.close();
  37.     }
  38. }
RAW Paste Data