https://coderun.yandex.ru/problem/beauty-above-all/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 (n, k) = reader.readLine().split(" ").map { it.toInt() }
    val trees = reader.readLine().split(" ").map { it.toInt() }.toIntArray()

    val count = mutableMapOf<Int, Int>()
    var uniqueCount = 0
    
    var minLength = n + 1
    var bestLeft = 0
    var bestRight = 0
    
    var left = 0
    
    for (right in 0 until n) {
        val rightTree = trees[right]
        count[rightTree] = count.getOrDefault(rightTree, 0) + 1
        if (count[rightTree] == 1) uniqueCount++
        
        while (uniqueCount == k && left <= right) {
            val currentLength = right - left + 1
            if (currentLength < minLength) {
                minLength = currentLength
                bestLeft = left + 1
                bestRight = right + 1
            }
            
            val leftTree = trees[left]
            count[leftTree] = count[leftTree]!! - 1
            if (count[leftTree] == 0) uniqueCount--
            left++
        }
    }
    
    writer.write("$bestLeft $bestRight")
    writer.newLine()
    
    reader.close()
    writer.close()
}