Files
leetcode-cpp/src/problems/2616-minimize-the-maximum-difference-of-pairs.cpp
2026-03-11 22:31:31 +08:00

49 lines
900 B
C++

/**
* [2616] Minimize the Maximum Difference of Pairs
*/
#include <bits/stdc++.h>
#include <gtest/gtest.h>
using namespace std;
// submission codes start here
class Solution {
public:
int minimizeMax(vector<int> &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);
}