Решение
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()
}