Advertisement
saurav_kalsoor

Mochas Query - KOTLIN

Dec 22nd, 2021
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.11 KB | None | 0 0
  1. // Author: Saurav Kalsoor
  2. // Mochas Query - KOTLIN
  3.  
  4. import java.util.*
  5.  
  6. var sc: Scanner = Scanner(System.`in`)
  7.  
  8. fun main() {
  9.     val n: Int = sc.nextInt()
  10.     val q: Int = sc.nextInt()
  11.  
  12.     val height = IntArray(n)
  13.     val query = IntArray(q)
  14.  
  15.     for (i in 0 until n) {
  16.         height[i] = sc.nextInt()
  17.     }
  18.  
  19.     for (i in 0 until q) {
  20.         query[i] = sc.nextInt()
  21.     }
  22.  
  23.     val result = mochasQuery(height, n, query, q)
  24.  
  25.     for (i in 0 until q) {
  26.         print(result[i].toString() + " ")
  27.     }
  28. }
  29.  
  30. fun mochasQuery(height: IntArray, n: Int, query: IntArray, q: Int): IntArray {
  31.     val result = IntArray(q)
  32.     Arrays.sort(height)
  33.     for (i in 0 until q) {
  34.         result[i] = binarySearchX(height, n, query[i])
  35.     }
  36.     return result
  37. }
  38.  
  39. fun binarySearchX(height: IntArray, n: Int, x: Int): Int {
  40.     var lo = 0
  41.     var hi = n - 1
  42.     var index = n
  43.  
  44.     while (lo <= hi) {
  45.         val mid = lo + (hi - lo) / 2
  46.         if (height[mid] >= x) {
  47.             index = mid
  48.             hi = mid - 1
  49.         } else {
  50.             lo = mid + 1
  51.         }
  52.     }
  53.  
  54.     return n - index
  55. }
  56.  
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement