카테고리 없음
[백준] 2110번: 공유기 설치
컴슈니
2023. 7. 30. 19:38
문제
https://www.acmicpc.net/problem/2110
2110번: 공유기 설치
첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가
www.acmicpc.net
문제 해결
이분탐색
결과
코드
#include<iostream>
#include<algorithm>
using namespace std;
using ll = long long;
const int LM = 200005;
int n, c;
ll pos[LM];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> c;
for (int i = 0; i < n; i++)
{
cin >> pos[i];
}
sort(pos, pos + n);
ll low = 0, high = pos[n - 1];
ll ans = 0;
while (low <= high)
{
ll mid = (low + high) / 2;
ll cnt = 1;
ll last = pos[0];
for (int i = 1; i < n; i++)
{
if (pos[i] - last >= mid)
{
cnt++;
last = pos[i];
}
}
if (cnt >= c)
{
ans = mid;
low = mid + 1;
}
else
{
high = mid - 1;
}
}
cout << ans;
return 0;
}
728x90
반응형