문제 5650 · 메가 I
급행열차의 정차역 고르기
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
지하철 노선 하나에 N개의 역이 일직선 위에 놓여 있다. 역에는 시작점에서 가까운 순서대로 1번부터 N번까지 번호가 붙어 있고, i번 역은 시작점에서 x_i 미터 떨어진 곳에 있다. x_1 < x_2 < ... < x_N 이 성립한다.\n\n이 노선에 급행열차를 하나 운행하려 한다. 급행열차는 1번 역에서 출발해 N번 역에서 끝나며, 도중에 정차할 역을 골라야 한다. 1번 역과 N번 역에는 항상 정차한다. 또한 일부 역은 환승객 때문에 필수 정차역으로 지정되어 있으며, 필수 정차역에는 반드시 정차해야 한다. 정차하는 역의 수는 1번 역과 N번 역을 포함하여 K개 이하여야 한다.\n\n정차한 역들을 번호 순서로 나열했을 때 이웃한 두 정차역 사이의 거리 중 가장 큰 값을 최대 무정차 거리라 한다. 위 조건을 모두 만족하도록 정차역을 고를 때, 최대 무정차 거리의 최솟값을 구하여라. 조건을 만족하는 선택이 하나도 없으면 -1을 출력한다.
입력
첫째 줄에 정수 N과 K가 주어진다. (2 ≤ N ≤ 200,000, 2 ≤ K ≤ N)\n둘째 줄에 x_1, x_2, ..., x_N 이 공백으로 구분되어 주어진다. (0 ≤ x_1 < x_2 < ... < x_N ≤ 10^9, 정수)\n셋째 줄에 길이 N인 문자열 f가 공백 없이 주어진다. f의 i번째 문자가 1이면 i번 역이 필수 정차역이고 0이면 아니다. 1번과 N번 역은 f의 값과 관계없이 항상 정차한다.
출력
최대 무정차 거리의 최솟값을 한 줄에 출력한다. 조건을 만족하는 선택이 없으면 -1을 출력한다.
예제 입력 1
5 3 0 3 4 9 10 00000
예제 출력 1
6
예제 입력 2
5 3 0 3 4 9 10 00010
예제 출력 2
9
예제 입력 3
3 2 0 5 6 010
예제 출력 3
-1
힌트 펼치기
- 최대 무정차 거리가 D 이하로 가능한지는 D가 커질수록 단조롭게 쉬워진다.
- D가 고정되면, 현재 정차역에서 다음 필수 정차역을 넘지 않는 한도 안에서 가장 멀리 가는 역에 정차하는 것이 최선이다.
- 필수 정차역 수(양 끝 포함)가 K보다 크면 답은 -1이다.
관련 서재 장
알고리즘 분류
이분 탐색매개변수 탐색그리디풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |