diff --git a/cpp/2616-minimize-the-maximum-difference-of-pairs.cpp b/cpp/2616-minimize-the-maximum-difference-of-pairs.cpp new file mode 100644 index 000000000..a860f3010 --- /dev/null +++ b/cpp/2616-minimize-the-maximum-difference-of-pairs.cpp @@ -0,0 +1,30 @@ +#include +#include + +class Solution { +public: + int num_of_pairs(vector& nums, int max_diff) { + int num_of_pairs = 0; + for (int i = 1, n = nums.size(); i < n; i++) { + int diff = nums[i] - nums[i - 1]; + if (diff <= max_diff) { + num_of_pairs += 1; + i++; + } + } + return num_of_pairs; + } + + int minimizeMax(vector& nums, int p) { + std::sort(nums.begin(), nums.end()); + int left = 0, right = nums.back() - nums.front(); + while (left <= right) { + int max_diff = (left + right) / 2; + if (num_of_pairs(nums, max_diff) >= p) + right = max_diff - 1; + else + left = max_diff + 1; + } + return left; + } +};