티스토리 뷰

728x90

문제

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

 

풀이 및 소스코드

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
arr = list(int(input()) for _ in range(n))

arr.sort()

start = 1
end = arr[n-1]-arr[0]
res = 0
while(start <= end):
    mid = (start+end)//2
    tmp = arr[0]+mid
    cnt = 1
    for i in range(1, n):
        if(tmp <= arr[i]):
            cnt += 1
            tmp = arr[i]+mid
    if(cnt >= m):
        start = mid+1
        res = max(res, mid)
    else:
        end = mid-1

print(res)
반응형