본문 바로가기
  • Let's study
PS/백준

[C++] 백준 2110번: 공유기 설치

by 코딩고수이고파 2020. 12. 30.
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;

vector<int>v;

int main(){
	int n, c;
	cin >> n >> c;
	for (int i = 0; i < n; i++) {
		int a;
		cin >> a;
		v.push_back(a);
	}

	sort(v.begin(), v.end());

	int left = 1;
	int right = v[n-1]-v[0];
	int result = 0;

	while (left <= right) {
		int mid = (left +  right) / 2;
		int cnt = 1;	//공유기 개수
		int loc = v[0];	//공유기 위치

		for (int i = 0; i < n; i++) {
			if (v[i] - loc >= mid) {
				cnt++;
				loc = v[i];
			}
		}
		if (cnt >= c) {
			left = mid + 1;
			result = mid;
		}
		else
			right = mid - 1;
	}
	cout << result;
	return 0;
}

'PS > 백준' 카테고리의 다른 글

[C++] 백준 10799번: 쇠막대기  (0) 2021.02.04
[C++] 백준 16206번: 롤케이크  (0) 2021.01.23
[C++] 백준 10870번: 피보나치 수 5  (0) 2020.12.27
[C++] 백준 2292번: 벌집  (0) 2020.12.26
[C++] 백준 2839번: 설탕 배달  (0) 2020.12.26

댓글