https://coderun.yandex.ru/problem/sorting-of-wagons-lite/description Легкая

Решение

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 cars = reader.readLine().trim().split(" ").map(String::toInt) // Порядок вагонов

    val stack = Stack<Int>()
    var current = 1

    for (car in cars) {
        stack.push(car) // Помещаем вагон в тупик

        // Пока верхний вагон соответствует ожидаемому номеру, убираем его
        while (stack.isNotEmpty() && stack.peek() == current) {
            stack.pop()
            current++
        }
    }

    // Если все вагоны упорядочены, выводим YES, иначе NO
    writer.write(if (stack.isEmpty()) "YES" else "NO")

    reader.close()
    writer.close()
}