/** * [2616] Minimize the Maximum Difference of Pairs */ #include #include using namespace std; // submission codes start here class Solution { public: int minimizeMax(vector &nums, int p) { ranges::sort(nums); auto check = [&](int value) -> bool { int count = 0; for (int i = 0; i < nums.size() - 1; ++i) { if (nums[i + 1] - nums[i] <= value) { count += 1; i += 1; } } return count >= p; }; int left = 0, right = nums.back() - nums[0]; while (left < right) { int middle = (left + right) >> 1; if (check(middle)) { right = middle; } else { left = middle + 1; } } return left; } }; // submission codes end. TEST(P2616, Test1) { vector nums = {10, 1, 2, 7, 1, 3}; Solution s; ASSERT_EQ(s.minimizeMax(nums, 2), 1); }