Baekjoon/Search
[백준 2512] 예산 (Binary Search) (C/C++) (★)
워니-
2020. 3. 31. 03:15
#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 |