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