https://coderun.yandex.ru/problem/stack-protection-from-errors/description Легкая

Решение

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

fun main() {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))
    val stack = ArrayDeque<Int>() // Используем ArrayDeque как стек

    while (true) {
        val command = reader.readLine().split(" ") // Читаем команду

        when (command[0]) {
            "push" -> {
                stack.addLast(command[1].toInt()) // Добавляем число в стек
                writer.write("ok")
            }
            "pop" -> {
                if (stack.isEmpty()) writer.write("error") // Проверяем, пуст ли стек
                else writer.write(stack.removeLast().toString()) // Удаляем и выводим последний элемент
            }
            "back" -> {
                if (stack.isEmpty()) writer.write("error") // Проверяем, пуст ли стек
                else writer.write(stack.last().toString()) // Выводим последний элемент без удаления
            }
            "size" -> writer.write(stack.size.toString()) // Выводим размер стека
            "clear" -> {
                stack.clear() // Очищаем стек
                writer.write("ok")
            }
            "exit" -> {
                writer.write("bye") // Завершаем программу
                break
            }
        }
        writer.newLine() // Переход на новую строку
    }

    reader.close()
    writer.close()
}