https://coderun.yandex.ru/problem/improving-academic-performance/description Легкая

Решение

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

private fun improvingAcademicPerformance(count2: Long, count3: Long, count4: Long): Long {
    val target = 4
    val maxValue = 10000000000000000L
    
    var left = 0L
    var right = maxValue

    while (left < right) {
        val medium = (left + right) / 2
        if (checkMark(count2, count3, count4, medium, target)) {
            right = medium
        } else {
            left = medium + 1
        }
    }

    return left
}

// Проверяет, возможно ли достичь требуемого среднего балла
private fun checkMark(count2: Long, count3: Long, count4: Long, count5: Long, target: Int): Boolean {
    return 2 * (count2 * 2 + count3 * 3 + count4 * 4 + count5 * 5) >= (target * 2 - 1) * (count2 + count3 + count4 + count5)
}

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

    val count2 = reader.readLine().toLong()
    val count3 = reader.readLine().toLong()
    val count4 = reader.readLine().toLong()

    val res = improvingAcademicPerformance(count2, count3, count4)
    writer.write(res.toString())
    writer.newLine()

    reader.close()
    writer.close()
}