/* This solves the problem using linear search, which of course will be too slow, but it's a good first step to implementing binary search. */ #include #include #include #include using namespace std; class Solution { public: int minimizeMax(vector &nums, int p); }; int Solution::minimizeMax(vector &nums, int p) { int ans; int max; int num_pairs; size_t i; sort(nums.begin(), nums.end()); max = nums[nums.size()-1]; for (ans = 0; ans <= max; ans++) { // This is linear, rather than binary. num_pairs = 0; for (i = 1; i < nums.size(); i++) { if (nums[i] - nums[i-1] <= ans) { num_pairs++; i++; } } printf("ans: %d. num_pairs: %d. Success: %s\n", ans, num_pairs, (num_pairs >= p) ? "Y" : "N"); } return 0; } /* Read in nums and p, and call the method. */ int main() { vector nums; int p; Solution s; while (cin >> p) nums.push_back(p); nums.pop_back(); cout << s.minimizeMax(nums, p) << endl; return 0; }