https://coderun.yandex.ru/problem/upgrade-your-hero/description Средняя

Решение

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

private fun upgradeYourHero(nums: IntArray): Int {
    val negCount = nums.count { it < 0 } // Количество отрицательных чисел
    val zeroCount = nums.count { it == 0 } // Количество нулей
    val posCount = nums.size - negCount - zeroCount // Количество положительных чисел

    return when {
        zeroCount > 1 -> 0 // Если нулей больше одного, ответ 0
        zeroCount == 1 -> if (negCount % 2 == 0) 0 else nums.min() // Если один ноль и отрицательных чётное число, ответ 0, иначе минимальное число
        negCount % 2 == 0 -> 
            if (posCount != 0) nums.minBy { if (it < 0) Int.MAX_VALUE else it } // Если чётное число отрицательных и есть положительные, выбираем минимальное положительное
            else nums.min() // Если положительных нет, выбираем минимальное число
        else -> nums.maxBy { if (it > 0) Int.MIN_VALUE else it } // Если отрицательных нечётное число, выбираем максимальное отрицательное
    }
}

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

    reader.readLine() // Читаем, но не используем размер массива
    val nums = reader.readLine().split(" ").map { it.toInt() }.toIntArray() // Читаем массив чисел

    val res = upgradeYourHero(nums) // Вычисляем результат
    writer.write(res.toString()) // Вывод результата
    writer.newLine()

    reader.close()
    writer.close()
}