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