




class Solution { // 875 O(n log m) O(1)
public:
    int minEatingSpeed(vector<int>& p, int g) {
        int l = 1, r = *max_element(p.begin(), p.end());
        while (l < r) {
            int k = l + (r - l) / 2;
            long long m = 0;
            for (int x : p) {
                m += (x + k - 1) / k;
                if (m > g) break;
            }
            if (m <= g) r = k;
            else l = k + 1;
        }
        return l;
    }
};