Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Author : Saurav Kalsoor
- // Sort By Indices - KOTLIN
- import java.util.*
- var sc: Scanner = Scanner(System.`in`)
- fun main() {
- val n: Int = sc.nextInt()
- val m: Int = sc.nextInt()
- val arr: ArrayList<Int> = ArrayList<Int>()
- val indices: ArrayList<Int> = ArrayList<Int>()
- for (i in 0 until n) {
- val input: Int = sc.nextInt()
- arr.add(input)
- }
- for (i in 0 until m) {
- val input: Int = sc.nextInt()
- indices.add(input)
- }
- val result: ArrayList<Int> = sortByIndices(arr, indices, n, m)
- for (i in 0 until n)
- print(result.get(i).toString() + " ")
- println()
- }
- fun sortByIndices(arr: ArrayList<Int>, indices: ArrayList<Int>, n: Int, m: Int): ArrayList<Int> {
- val sortDesc: ArrayList<Int> = ArrayList<Int>()
- val sortAsc: ArrayList<Int> = ArrayList<Int>()
- val indicesSet: HashSet<Int> = HashSet<Int>()
- for (i in 0 until m) {
- indicesSet.add(indices.get(i))
- }
- for (i in 0 until n) {
- if (indicesSet.contains(i)) {
- sortDesc.add(arr.get(i))
- } else {
- sortAsc.add(arr.get(i))
- }
- }
- Collections.sort(sortDesc, Collections.reverseOrder())
- Collections.sort(sortAsc)
- val result: ArrayList<Int> = ArrayList<Int>()
- var j = 0
- var k = 0
- for (i in 0 until n) {
- if (indicesSet.contains(i)) {
- result.add(sortDesc.get(j))
- j++
- } else {
- result.add(sortAsc.get(k))
- k++
- }
- }
- return result
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement