https://coderun.yandex.ru/problem/boring-lecture/description Средняя

Решение

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

fun main() {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))

    val s = reader.readLine()
    val n = s.length
    val count = mutableMapOf<Char, Long>()

    for (i in s.indices) {
        val contrib = (i + 1).toLong() * (n - i) // Сколько раз буква участвует в подпоследовательностях
        count[s[i]] = count.getOrDefault(s[i], 0) + contrib
    }

    for ((char, freq) in count.toSortedMap()) {
        writer.write("$char: $freq")
        writer.newLine()
    }

    reader.close()
    writer.close()
}