Решение
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()
}