From b70046b7da3c0d6956ef757c00ae67b9da1f6942 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Fri, 13 Jun 2025 16:53:40 +0800 Subject: [PATCH] 20250613 finished. --- ...nimize-the-maximum-difference-of-pairs.cpp | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/problems/2616-minimize-the-maximum-difference-of-pairs.cpp diff --git a/src/problems/2616-minimize-the-maximum-difference-of-pairs.cpp b/src/problems/2616-minimize-the-maximum-difference-of-pairs.cpp new file mode 100644 index 0000000..39b34a0 --- /dev/null +++ b/src/problems/2616-minimize-the-maximum-difference-of-pairs.cpp @@ -0,0 +1,60 @@ +/** +* [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); +} \ No newline at end of file