https://leetcode.com/problems/minimum-subsequence-in-non-increasing-order/description/ Easy

Решение

class Solution {
    fun minSubsequence(nums: IntArray): List<Int> {
        val cnt = IntArray(101)
        var sum = 0
        for (v in nums) { cnt[v]++; sum += v }
        val res = ArrayList<Int>()
        var acc = 0
        var v = 100
        while (acc <= sum - acc) {
            while (v > 0 && cnt[v] == 0) v--
            if (v == 0) break
            res.add(v)
            cnt[v]--
            acc += v
        }
        while (acc <= sum - acc) {
            while (v > 0 && cnt[v] == 0) v--
            res.add(v)
            cnt[v]--
            acc += v
        }
        return res
    }
}