https://coderun.yandex.ru/problem/release-the-goose/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))

    // Читаем количество статей (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()
}