#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <string.h>
#include <math.h>
#include <vector>
using namespace std;
long long N;
long long total;
long long budget[10010];
long long cal(long long mid)
{
long long sum = 0;
for(int i = 1; i <= N; i++)
{
if(budget[i] <= mid)
{
sum += budget[i];
}
else
{
sum += mid;
}
}
return sum;
}
int main(void)
{
// freopen("B2512_input.txt", "r", stdin);
cin >> N;
for(int i = 1; i <= N; i++)
{
cin >> budget[i];
}
sort(budget+1, budget+N+1);
cin >> total;
long long left = 1;
long long right = budget[N];
long long Max = 0;
while(left <= right)
{
// 상한액
long long mid = (left + right) / 2;
// 예산
long long sum = cal(mid);
if(sum > total)
{
right = mid-1;
}
else if(sum <= total)
{
if(Max < mid)
{
Max = mid;
}
left = mid+1;
}
}
cout << Max;
return 0;
}
|
cs |
'Baekjoon > Search' 카테고리의 다른 글
[백준 2110] 공유기 설치 (Binary Search) (C/C++) (★★★) (0) | 2020.03.31 |
---|---|
[백준 2869] 달팽이는 올라가고 싶다 (Binary Search) (C/C++) (0) | 2020.03.31 |
[백준 2805] 나무 자르기 (Binary Search) (C/C++) (★) (0) | 2020.01.28 |
[백준 1654] 랜선 자르기 (Binary Search) (C/C++) (★) (0) | 2020.01.28 |