본문 바로가기
Problem Solving/백준

[백준] 1654번 : 랜선 자르기

by shinbian11 2020. 6. 19.

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