Решение
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))
// Читаем количество статей (n) и порог упоминаний (k)
val (n, k) = reader.readLine().split(" ").map { it.toInt() }
// Словарь для подсчета упоминаний "goose" для каждого сайта
val siteGooseCount = mutableMapOf<String, Int>()
// Обрабатываем n пар (сайт, описание)
repeat(n) {
val site = reader.readLine() // Название сайта
val message = reader.readLine() // Краткое описание
// Разбиваем описание на слова и считаем упоминания "goose"
val words = message.split(" ")
val gooseCount = words.count { it == "goose" }
// Добавляем количество упоминаний для сайта (суммируем, если сайт уже был)
siteGooseCount[site] = siteGooseCount.getOrDefault(site, 0) + gooseCount
}
// Фильтруем сайты, у которых >= k упоминаний
val filteredSites = siteGooseCount
.filter { it.value >= k }
.keys
.sorted() // Сортируем в алфавитном порядке
// Выводим количество отфильтрованных сайтов
writer.write(filteredSites.size.toString())
writer.newLine()
// Выводим названия отфильтрованных сайтов
filteredSites.forEach { site ->
writer.write(site)
writer.newLine()
}
reader.close()
writer.close()
}