Your question is Minimize Peak Mobile Memory. Start with the requirements on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
Given an integer array usage and an integer k, each operation chooses one element and replaces it with floor(value / 2). Return the minimum possible value of the maximum element after at most k operations.
1 <= usage.length <= 10^50 <= usage[i] <= 10^90 <= k <= 10^9