https://coderun.yandex.ru/problem/additional-check-cheating/description Средняя

Решение

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

fun isIdentifier(word: String, digitStart: Boolean, keywords: Set<String>, caseSensitive: Boolean): Boolean {
    if (word.all { it.isDigit() }) return false
    if (!digitStart && word.first().isDigit()) return false
    val checkWord = if (caseSensitive) word else word.lowercase()
    return checkWord !in keywords
}

fun main() {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))
    val (n, caseSensitive, digitStart) = reader.readLine().split(" ").let {
        Triple(it[0].toInt(), it[1] == "yes", it[2] == "yes")
    }
    val keywords = mutableSetOf<String>()
    repeat(n) {
        val keyword = reader.readLine()
        keywords.add(if (caseSensitive) keyword else keyword.lowercase())
    }
    val program = StringBuilder()
    while (true) {
        val line = reader.readLine() ?: break
        program.append(line).append("\\n")
    }
    val text = program.toString()
    val freqMap = mutableMapOf<String, Int>()
    val orderList = mutableListOf<String>()
    val regex = Regex("[a-zA-Z0-9_]+")
    regex.findAll(text).forEach { match ->
        val word = match.value
        if (isIdentifier(word, digitStart, keywords, caseSensitive)) {
            val key = if (caseSensitive) word else word.lowercase()
            if (key !in freqMap) orderList.add(key)
            freqMap[key] = (freqMap[key] ?: 0) + 1
        }
    }
    var maxFreq = 0
    var result = ""
    orderList.forEach { id ->
        val freq = freqMap[id] ?: 0
        if (freq > maxFreq) {
            maxFreq = freq
            result = id
        }
    }
    writer.write(result)
    writer.newLine()
    reader.close()
    writer.close()
}