Advertisement
saurav_kalsoor

Sort By Indices - KOTLIN

Jan 25th, 2022
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Author : Saurav Kalsoor
  2. // Sort By Indices - 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 m: Int = sc.nextInt()
  11.     val arr: ArrayList<Int> = ArrayList<Int>()
  12.     val indices: ArrayList<Int> = ArrayList<Int>()
  13.  
  14.     for (i in 0 until n) {
  15.         val input: Int = sc.nextInt()
  16.         arr.add(input)
  17.     }
  18.     for (i in 0 until m) {
  19.         val input: Int = sc.nextInt()
  20.         indices.add(input)
  21.     }
  22.     val result: ArrayList<Int> = sortByIndices(arr, indices, n, m)
  23.  
  24.     for (i in 0 until n)
  25.         print(result.get(i).toString() + " ")
  26.     println()
  27. }
  28.  
  29. fun sortByIndices(arr: ArrayList<Int>, indices: ArrayList<Int>, n: Int, m: Int): ArrayList<Int> {
  30.     val sortDesc: ArrayList<Int> = ArrayList<Int>()
  31.     val sortAsc: ArrayList<Int> = ArrayList<Int>()
  32.     val indicesSet: HashSet<Int> = HashSet<Int>()
  33.  
  34.     for (i in 0 until m) {
  35.         indicesSet.add(indices.get(i))
  36.     }
  37.  
  38.     for (i in 0 until n) {
  39.         if (indicesSet.contains(i)) {
  40.             sortDesc.add(arr.get(i))
  41.         } else {
  42.             sortAsc.add(arr.get(i))
  43.         }
  44.     }
  45.  
  46.     Collections.sort(sortDesc, Collections.reverseOrder())
  47.     Collections.sort(sortAsc)
  48.  
  49.     val result: ArrayList<Int> = ArrayList<Int>()
  50.    
  51.     var j = 0
  52.     var k = 0
  53.  
  54.     for (i in 0 until n) {
  55.         if (indicesSet.contains(i)) {
  56.             result.add(sortDesc.get(j))
  57.             j++
  58.         } else {
  59.             result.add(sortAsc.get(k))
  60.             k++
  61.         }
  62.     }
  63.     return result
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement