Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.Stack
fun main() {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
val n = reader.readLine().toInt() // Количество городов
val prices = reader.readLine().trim().split(" ").map(String::toInt) // Средние цены проживания
val stack = Stack<Int>()
val result = IntArray(n) { -1 }
for (i in 0 until n) {
// Ищем город с меньшей ценой, чем текущий
while (stack.isNotEmpty() && prices[stack.peek()] > prices[i]) {
result[stack.pop()] = i
}
stack.push(i)
}
// Выводим номера городов для переселения
writer.write(result.joinToString(" "))
reader.close()
writer.close()
}