https://coderun.yandex.ru/problem/bank-accounts/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 accounts = mutableMapOf<String, Long>()

    while (true) {
        val line = reader.readLine() ?: break
        val parts = line.split(" ")
        when (parts[0]) {
            "DEPOSIT" -> {
                val name = parts[1]
                val sum = parts[2].toLong()
                accounts[name] = (accounts[name] ?: 0L) + sum
            }
            "WITHDRAW" -> {
                val name = parts[1]
                val sum = parts[2].toLong()
                accounts[name] = (accounts[name] ?: 0L) - sum
            }
            "BALANCE" -> {
                val name = parts[1]
                if (accounts.containsKey(name)) {
                    writer.write(accounts[name].toString())
                } else {
                    writer.write("ERROR")
                }
                writer.newLine()
            }
            "TRANSFER" -> {
                val name1 = parts[1]
                val name2 = parts[2]
                val sum = parts[3].toLong()
                accounts[name1] = (accounts[name1] ?: 0L) - sum
                accounts[name2] = (accounts[name2] ?: 0L) + sum
            }
            "INCOME" -> {
                val p = parts[1].toLong()
                for (name in accounts.keys) {
                    val balance = accounts[name]!!
                    if (balance > 0) {
                        accounts[name] = balance + balance * p / 100
                    }
                }
            }
        }
    }

    reader.close()
    writer.close()
}