https://coderun.yandex.ru/problem/diplomas/description Легкая

Решение

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

fun canFit(s: Long, w: Long, h: Long, n: Long): Boolean {
    return (s / w) * (s / h) >= n
}

fun main() {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))
    val (w, h, n) = reader.readLine().split(" ").map { it.toLong() }
    var left = maxOf(w, h)
    var right = maxOf(w, h) * n
    var result = right

    while (left <= right) {
        val mid = (left + right) / 2
        if (canFit(mid, w, h, n)) {
            result = mid
            right = mid - 1
        } else {
            left = mid + 1
        }
    }

    writer.write(result.toString())
    writer.newLine()
    writer.flush()
    reader.close()
    writer.close()
}