백준 2512 예산

supway·2022년 3월 7일
0

백준

목록 보기
54/62

백준 2512
파라메트릭 서치를 이용해서 풀었다. search 함수는 x가 배정된 예산들 중 최댓값일 때 나올 수 있는 총 예산이다. 요청한 모든 금액들의 합이 총예산보다 적을 경우 예외처리를 해줘야 한다.

#include<bits/stdc++.h>
using namespace std;
int n, m;
int arr[10001];
int search(int x) {
	int sum = 0;
	for (auto c : arr) {
		if (c >= x) {
			sum += x;
		}
		else {
			sum += c;
		}
	}
	return sum;
}
int main() {

	ios::sync_with_stdio(0); cin.tie(0);

	cin >> n;
	
	int sum = 0;
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
		sum += arr[i];
	}

	cin >> m;

	sort(arr, arr + n);

	if (sum <= m) {
		cout << arr[n - 1];
	}
	else {
		int l = 1, r = arr[n - 1];

		while (l < r) {
			int mid = (l + r) / 2;

			if (search(mid) < m) {
				l = mid + 1;
			}
			else if (search(mid) >= m) {
				r = mid;
			}
		}
		if (search(l) == m) cout << l << '\n';
		else cout << l - 1 << '\n';
	}
}
profile
개발잘하고싶은사람

0개의 댓글