Skip to content

Instantly share code, notes, and snippets.

@surinoel
Created September 20, 2019 15:45
Show Gist options
  • Save surinoel/3a9ffc3520102cdf7552688bbc6b4baa to your computer and use it in GitHub Desktop.
Save surinoel/3a9ffc3520102cdf7552688bbc6b4baa to your computer and use it in GitHub Desktop.
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int solution(vector<int> budgets, int M) {
int answer = -1;
int tsum = -1;
sort(budgets.begin(), budgets.end());
int left = 0, right = budgets.back();
int mid = (left + right) / 2;
while (left <= right) {
int sum = 0;
for (int i = 0; i < budgets.size(); i++) {
if (budgets[i] >= mid) {
sum += mid;
}
else {
sum += budgets[i];
}
}
if (sum > M) {
right = mid - 1;
}
else {
if (tsum == -1 || sum > tsum) {
tsum = sum;
answer = mid;
}
left = mid + 1;
}
mid = (left + right) / 2;
}
return answer;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment