Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Author : Saurav Kalsoor
- // Minimize Unique Numbers - JAVA
- import java.util.*;
- public class Test {
- static Scanner sc = new Scanner(System.in);
- public static void main(String[] args) {
- int n = sc.nextInt();
- int k = sc.nextInt();
- ArrayList<Integer> arr = new ArrayList<>();
- for(int i = 0;i < n; i++){
- arr.add(sc.nextInt());
- }
- System.out.println(minimizeUnique(arr, k));
- }
- public static int minimizeUnique(ArrayList<Integer> arr, int k){
- HashMap<Integer, Integer> count = new HashMap<>();
- for(int num : arr){
- count.put(num, count.getOrDefault(num, 0) + 1);
- }
- Set<MyPair> st = new TreeSet<>(new Comparator<MyPair>() {
- @Override
- public int compare(MyPair a, MyPair b) {
- if(a.second == b.second)
- return a.first - b.first;
- return a.second - b.second;
- }
- });
- for(Map.Entry<Integer, Integer> x : count.entrySet()){
- st.add(new MyPair(x.getKey(), x.getValue()) );
- }
- int res = st.size();
- for(MyPair x : st){
- if(k >= x.second){
- res--;
- k -= x.second;
- }else{
- break;
- }
- }
- return res;
- }
- }
- class MyPair{
- public int first, second;
- public MyPair(int first, int second){
- this.first = first;
- this.second = second;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement