https://www.acmicpc.net/problem/1654
<c++>
#include <bits/stdc++.h>
#include <limits.h>
typedef long long ll;
using namespace std;
int a[50005];
int k, n;
int pos(ll mid) //판정함수
{
int sum = 0;
for (int i = 0; i < k; i++)
sum += (a[i] / mid);
if (sum < n)
return 0;
else
return 1;
}
int main()
{
cin >> k >> n;
for (int i = 0; i < k; i++)
cin >> a[i];
ll s = 0, e = INT_MAX;
ll ans = 0;
ll mid;
while (s <= e)
{
mid = (s + e) / 2;
if (pos(mid))
{
ans = max({ ans, mid }); //랜선의 '최대' 길이를 구해야 하니까!
s = mid + 1;
}
else
{
e = mid - 1;
}
}
cout << ans << endl;
}
'Problem Solving > 백준' 카테고리의 다른 글
[백준] 2875번 : 대회 or 인턴 (0) | 2020.06.23 |
---|---|
[백준] 2667번 : 단지 번호 붙이기 (0) | 2020.06.21 |
[백준] 2512번 : 예산 (0) | 2020.06.17 |
[백준] 5575번 : 타임카드 (0) | 2020.04.05 |
[백준] 2446번 : 별 찍기 - 9 (0) | 2020.03.15 |