순간을 성실히, 화려함보단 꾸준함을

[ boj : 13702 ] 이상한 술집 본문

알고리즘,SQL/백준,BOJ

[ boj : 13702 ] 이상한 술집

폭발토끼 2021. 4. 26. 23:34

www.acmicpc.net/problem/13702

 

13702번: 이상한 술집

프로그래밍 대회 전날, 은상과 친구들은 이상한 술집에 모였다. 이 술집에서 막걸리를 시키면 주전자의 용량은 똑같았으나 안에 들어 있는 막걸리 용량은 랜덤이다.  즉 한 번 주문에 막걸리 용

www.acmicpc.net

문제 : n개의 주전자가 주어지고 k 명에게 최대한 많은 양의 술을 나누어 주고 싶습니다.

 

해설 : 이분탐색 문제입니다. 다만 주의할 점은 최대값이 될 조건들을 잘 생각해서 걸러내야됩니다.

int 형 범위를 넘어 갈 수 있어서 long long 형으로 선언해 주세요

 

#include<bits/stdc++.h>

using namespace std;
using ll = long long;

ll arr[10000];

int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < n; i++)cin >> arr[i];
	sort(arr, arr + n);
	ll l = 0, r = (ll)10e9;
	ll ans = 0;
	while (l <= r)
	{
		ll cnt = 0;
		ll mid = (l + r) / 2;
		for (int i = 0; i < n; i++)
			cnt += (arr[i] / mid);
		if (cnt < m)
			r = mid - 1;
		else {
			ans = mid;
			l = mid + 1;
		}
	}
	cout << ans;
	return 0;
}