문제 5665 · 기가 V
스프링클러 최소 반경
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
농장의 긴 이랑 하나에 N그루의 과수가 심겨 있다. i번 과수의 위치는 이랑의 왼쪽 끝에서 잰 정수 거리 x_i미터이다. 같은 위치에 여러 그루가 있을 수 있고, 위치는 정렬되어 주어지지 않는다.\n농장주는 스프링클러 K대를 이랑 위에 설치하려 한다. 모든 스프링클러는 같은 정수 반경 r을 가지며, 정수 위치 p에 설치한 스프링클러는 p - r 이상 p + r 이하인 위치에 있는 과수에 모두 물을 준다. 설치 위치 p는 과수의 위치와 무관하게 아무 정수나 고를 수 있고 음수여도 된다. 같은 위치에 여러 대를 설치해도 되며, K대를 모두 설치해야 하지만 일부가 불필요해도 상관없다.\n모든 과수가 적어도 한 대의 스프링클러에게서 물을 받도록 설치할 수 있는 최소의 정수 반경 r을 구하시오. 반경이 0이면 스프링클러는 자기 위치의 과수에만 물을 준다. 예를 들어 과수가 위치 1, 2, 10, 11, 20에 있고 K가 2이면, 반경 5로 위치 6과 25에 설치하여 모든 과수에 물을 줄 수 있다.
입력
첫 줄에 N, K가 공백으로 구분되어 주어진다. (1 ≤ K ≤ N ≤ 200000) 둘째 줄에 x_1, ..., x_N이 공백으로 구분되어 주어진다. (0 ≤ x_i ≤ 10^9)
출력
조건을 만족하는 최소 정수 반경 r을 한 줄에 출력한다.
예제 입력 1
5 2 1 2 10 11 20
예제 출력 1
5
예제 입력 2
3 3 7 7 100
예제 출력 2
0
예제 입력 3
4 1 3 9 4 1
예제 출력 3
4
힌트 펼치기
- 반경 r이 주어지면, 가장 왼쪽의 덮이지 않은 과수에서 시작하는 길이 2r 구간으로 덮는 그리디가 최소 대수를 준다.
- 반경이 커질수록 필요한 대수는 줄어들지 않고 단조 감소하므로 r에 대해 이분 탐색한다. 상한은 (최대 위치 - 최소 위치)의 절반을 올림한 값이다.
관련 서재 장
알고리즘 분류
이분 탐색매개변수 탐색그리디풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |