https://coderun.yandex.ru/problem/an-exciting-game/description Средняя

Решение

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.math.max
import kotlin.math.min

fun main() {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))

    val (n, a, b) = reader.readLine().split(" ").map { it.toInt() }
    reader.close()

    val dp = LongArray(n + 1)
    dp[1] = 0

    for (x in 2..n) {
        var best = Long.MAX_VALUE
        for (k in 1 until x) {
            val costYes = a.toLong() + dp[k]
            val costNo = b.toLong() + dp[x - k]
            val worst = max(costYes, costNo)
            if (worst < best) {
                best = worst
            }
        }
        dp[x] = best
    }

    writer.write(dp[n].toString())
    writer.newLine()
    writer.close()
}