문제 3923 · 바이트 IV
안내판을 여는 순서
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 주차장은 입구에서 안쪽으로 이어지는 N개의 구역으로 나뉘어 있다. 구역에는 입구에 가까운 순서대로 1번부터 N번까지 번호가 붙어 있으며, 모든 구역에는 주차 칸이 정확히 C개씩 있다. 관리인은 안내판을 켜서 새로 들어오는 차량이 이용할 수 있는 구역을 표시하려 한다. 점검을 마친 결과 i번 구역에는 이미 A_i대의 차량이 주차되어 있다. 차량 한 대는 주차 칸 하나를 차지하며, 나머지 칸은 모두 이용할 수 있다. 안내판의 연결 방식 때문에 구역을 임의로 골라 열 수는 없다. 관리인은 반드시 1번 구역부터 번호가 증가하는 순서대로 구역을 열어야 한다. 따라서 마지막으로 연 구역이 p번이라면 1번부터 p번까지의 구역이 모두 열리고, p번보다 뒤에 있는 구역은 모두 닫혀 있다. 구역 하나를 열 때에는 그 구역의 빈 주차 칸이 한꺼번에 모두 이용 가능한 상태가 된다. 한 구역에서 일부 칸만 따로 열 수는 없다. 관리인은 새로 들어올 차량을 위해 빈 주차 칸을 적어도 K개 확보하려 한다. 안내가 복잡해지는 것을 줄이기 위해, 이 조건을 만족하는 순간 더 이상 구역을 열지 않는다. 여기서 확보한 칸의 수는 열린 구역에 있는 빈 칸의 합이며, 이미 주차된 차량이 차지한 칸은 포함하지 않는다. 빈 칸이 하나도 없는 구역도 순서에 따라 열어야 하며, 이러한 구역을 건너뛰어 번호를 줄일 수는 없다. 점검과 안내판 설정이 진행되는 동안 차량이 들어오거나 나가는 일은 없다. 조건을 만족하도록 열어야 하는 최소 구역 수와, 그때 확보한 빈 칸 중 K개를 제외하고 남는 칸 수를 구한다. 모든 구역을 열어도 빈 칸이 K개보다 적다면 확보가 불가능하다고 판단한다.
입력
첫째 줄에 정수 N, C, K가 공백으로 구분되어 주어진다. 1 ≤ N ≤ 100,000, 1 ≤ C ≤ 9, 1 ≤ K ≤ 900,000이다. 둘째 줄에 각 구역에 주차된 차량 수를 나타내는 정수 A_1, A_2, …, A_N이 공백으로 구분되어 주어진다. 모든 i에 대해 0 ≤ A_i ≤ C이다.
출력
빈 주차 칸을 적어도 K개 확보할 수 있다면, 열어야 하는 최소 구역 수 p와 그때 확보한 빈 칸 수에서 K를 뺀 값을 공백으로 구분하여 출력한다. 최소 구역 수는 유일하게 정해진다. 모든 구역을 열어도 확보할 수 없다면 -1만 출력한다.
예제 입력 1
6 5 9 4 2 5 1 3 0
예제 출력 1
5 1
예제 입력 2
4 3 5 3 2 3 1
예제 출력 2
-1
예제 입력 3
1 9 1 0
예제 출력 3
1 8
힌트 펼치기
- 구역을 순서대로 살펴보며 C - A_i를 누적한다.
- 누적한 빈 칸 수가 처음으로 K 이상이 된 위치를 찾는다.
관련 서재 장
알고리즘 분류
구현누적 합풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |