https://www.acmicpc.net/problem/1654
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
<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 |