문제 4283 · 바이트 III
마라톤 훈련 신호
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
마라톤 대회 운영진은 본 대회에 앞서 참가자들의 신호 대응 훈련을 진행한다. 참가자는 N명이며 번호는 1번부터 N번까지이다. 모든 참가자는 출발선에서 시작하고, 처음 체력은 모두 E이다. 출발선에서 결승선까지의 거리는 L이다. 훈련 중에는 운영 장치가 신호를 하나씩 보내며, 각 신호에는 신호를 받을 참가자 번호와 이동할 거리 d가 적혀 있다. 참가자가 신호를 받았을 때 현재 체력이 d 이상이면 반드시 달린다. 이때 이동한 거리에 d를 더하고 체력에서 d를 뺀다. 현재 체력이 d보다 작으면 전혀 이동하지 않고 휴식한다. 휴식하면 체력이 R만큼 증가하지만 E를 초과하지 않는다. 휴식으로 체력이 충분해지더라도 그 신호에서 다시 달리지는 않으며, 다음에 자신에게 오는 신호를 기다린다. 달린 직후 누적 이동 거리가 L 이상이 되면 해당 참가자는 완주한다. 결승선을 넘어서 이동한 거리도 그대로 두며, 완주한 참가자는 이후 자신에게 오는 모든 신호를 무시한다. 무시한 신호에서는 이동하거나 체력을 회복하지 않는다. 신호를 받지 않은 다른 참가자의 거리와 체력도 변하지 않는다. 신호는 입력에 적힌 순서대로 하나씩 처리한다. 한 신호는 정확히 한 참가자에게만 전달되므로 같은 신호에서 여러 참가자가 동시에 완주하는 일은 없다. 운영진은 가장 먼저 완주한 참가자와 그 참가자가 완주하게 된 신호의 번호를 알고 싶다. 신호 번호는 첫 번째 신호부터 1번, 2번 순서로 붙인다. 모든 신호를 처리할 때까지 아무도 완주하지 못할 수도 있다. 주어진 훈련 기록에 따라 최초 완주 결과를 구하는 프로그램을 작성한다.
입력
첫째 줄에 정수 N, M, L, E, R이 공백으로 구분되어 주어진다. 1 ≤ N ≤ 1,000, 1 ≤ M ≤ 40,000, 1 ≤ L ≤ 1,000,000,000, 1 ≤ E ≤ 100, 1 ≤ R ≤ E이다. 다음 M개 줄에는 신호를 받을 참가자 번호 p와 이동할 거리 d가 주어진다. p와 d는 정수이며 1 ≤ p ≤ N, 1 ≤ d ≤ E이다.
출력
완주한 참가자가 있으면 가장 먼저 완주한 참가자 번호와 완주하게 된 신호 번호를 공백으로 구분하여 한 줄에 출력한다. 아무도 완주하지 못하면 -1만 출력한다.
예제 입력 1
2 5 7 5 3 1 4 1 3 2 5 1 3 2 2
예제 출력 1
1 4
예제 입력 2
1 3 6 4 2 1 4 1 3 1 3
예제 출력 2
-1
예제 입력 3
2 3 3 5 1 2 3 2 5 1 4
예제 출력 3
2 1
힌트 펼치기
- 참가자별 누적 거리와 현재 체력을 따로 저장한다.
- 휴식한 신호에서는 이동하지 않는다는 규칙에 주의한다.
관련 서재 장
알고리즘 분류
구현시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |