Advertisement
saurav_kalsoor

Minimize Unique - KOTLIN

Jul 19th, 2022
1,117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Author : Saurav Kalsoor
  2. // Minimize Unique Numbers - KOTLIN
  3.  
  4. import java.util.*
  5.  
  6. var sc = Scanner(System.`in`)
  7. fun main() {
  8.     val n: Int = sc.nextInt()
  9.     val k: Int = sc.nextInt()
  10.     val arr = ArrayList<Int>()
  11.     for (i in 0 until n) {
  12.         arr.add(sc.nextInt())
  13.     }
  14.     println(minimizeUnique(arr, k))
  15. }
  16.  
  17. fun minimizeUnique(arr: ArrayList<Int>, k: Int): Int {
  18.     var k = k
  19.     val count = HashMap<Int, Int>()
  20.     for (num in arr) {
  21.         count[num] = count.getOrDefault(num, 0) + 1
  22.     }
  23.     val st: MutableSet<MyPair> =
  24.         TreeSet { a, b ->
  25.             if (a.second == b.second)
  26.                 a.first - b.first
  27.             else a.second - b.second
  28.         }
  29.  
  30.     for ((key, value)  in count) {
  31.         st.add(MyPair(key, value))
  32.     }
  33.    
  34.     var res = st.size
  35.     for (x in st) {
  36.         k -= if (k >= x.second) {
  37.             res--
  38.             x.second
  39.         } else {
  40.             break
  41.         }
  42.     }
  43.     return res
  44. }
  45.  
  46. internal class MyPair(var first: Int, var second: Int)
  47.  
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement