https://coderun.yandex.ru/problem/seventh-chord/description Сложная

Решение

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

fun main(args: Array<String>) {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))

    // Читаем количество пьес
    val n = reader.readLine().toInt()
    // Читаем массив септаккордов
    val a = reader.readLine().split(" ").map { it.toInt() }

    // Бинарный поиск по ответу
    var left = 0
    var right = 1000  // Максимальное k: корень из 10^5 ≈ 316, но берем запас
    var result = 0

    while (left <= right) {
        val mid = (left + right) / 2
        val threshold = mid * mid  // k^2
        val count = a.count { it >= threshold }  // Сколько элементов >= k^2

        if (count >= mid) {
            // Если элементов достаточно, пробуем увеличить k
            result = mid
            left = mid + 1
        } else {
            // Иначе уменьшаем k
            right = mid - 1
        }
    }

    // Выводим результат
    writer.write(result.toString())

    reader.close()
    writer.close()
}