http://www.acmicpc.net/problem/2512
전체 코드
더보기
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 10000;
int N, M;
int num[MAX];
bool calc(int mid) {
int sum = 0;
for (int i = 0; i < N; i++)
sum += min(num[i], mid);
if (sum <= M)
return true;
return false;
}
int main() {
int right = 0;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> num[i];
right = max(right, num[i]);
}
cin >> M;
int ans = 0, left = 1;
for (int i = 0; i < M; i++) {
while (left <= right) {
int mid = (left + right) / 2;
if (calc(mid)) {
ans = mid;
left = mid + 1;
}
else right = mid - 1;
}
}
cout << ans;
}
'Koala - 2기 > B반' 카테고리의 다른 글
[백준 1374번] 강의실 (1) | 2021.02.18 |
---|---|
KOALA B반 - 2.18 미팅 (0) | 2021.02.18 |
[백준 2980] 도로와 신호등 (0) | 2021.02.08 |
KOALA B반 - 2.8 미팅 (0) | 2021.02.08 |
[2156번] 포도주 시식 (0) | 2021.02.08 |