https://coderun.yandex.ru/problem/new-year-fruits Легкая

Решение

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.math.max

data class FruitBox(val m: Long, val o: Long)

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

    val n = reader.readLine().toInt()
    val totalBoxes = 2 * n - 1

    val boxes = ArrayList<FruitBox>(totalBoxes)
    var totalMandarins = 0L
    var totalOranges = 0L

    for (i in 0 until totalBoxes) {
        val parts = reader.readLine().split(" ")
        val mandarins = parts[0].toLong()
        val oranges = parts[1].toLong()
        boxes.add(FruitBox(mandarins, oranges))
        totalMandarins += mandarins
        totalOranges += oranges
    }

    val requiredMandarins = (totalMandarins + 1) / 2
    val requiredOranges = (totalOranges + 1) / 2

    boxes.sortByDescending { it.o }

    var currentMandarins = 0L
    var currentOranges = 0L

    currentMandarins += boxes[0].m
    currentOranges += boxes[0].o

    for (i in 1 until n) {
        val index1 = 2 * i - 1
        val index2 = 2 * i
        if (boxes[index1].m >= boxes[index2].m) {
            currentMandarins += boxes[index1].m
            currentOranges += boxes[index1].o
        } else {
            currentMandarins += boxes[index2].m
            currentOranges += boxes[index2].o
        }
    }

    if (currentMandarins >= requiredMandarins && currentOranges >= requiredOranges) {
        writer.write("Yes")
    } else {
        writer.write("No")
    }
    writer.newLine()
    reader.close()
    writer.close()
}