https://coderun.yandex.ru/problem/diversity-scoring/description Легкая

Решение

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

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

    // Читаем количество товаров
    val n = reader.readLine().toInt()

    // Создаём словарь: productId -> category
    val productToCategory = mutableMapOf<Int, Int>()
    repeat(n) {
        val (productId, category) = reader.readLine().split(" ").map { it.toInt() }
        productToCategory[productId] = category
    }

    // Читаем порядок товаров в списке
    val order = reader.readLine().split(" ").map { it.toInt() }

    // Словарь для хранения последней позиции каждой категории
    val lastPosition = mutableMapOf<Int, Int>()
    var minDistance = n // Изначально разнообразие равно длине списка (все категории разные)

    // Проходим по порядку товаров
    for (i in order.indices) {
        val category = productToCategory[order[i]]!! // Получаем категорию текущего товара
        if (category in lastPosition) {
            // Если категория уже встречалась, вычисляем разность позиций
            val distance = i - lastPosition[category]!!
            minDistance = minOf(minDistance, distance) // Обновляем минимальную разность
        }
        lastPosition[category] = i // Обновляем последнюю позицию категории
    }

    // Выводим результат
    writer.write(minDistance.toString())
    writer.newLine()

    // Закрываем потоки
    reader.close()
    writer.close()
}