문제 3992 · 바이트 IV
정차 뒤의 승객 기록
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 지하철 열차가 승객이 없는 상태로 출발하여 N개의 역에 차례대로 정차한다. 운행 기록에는 각 역에서 내린 승객 수와 탄 승객 수가 적혀 있다. 기록을 확인하는 담당자는 각 역에서 승객의 이동이 모두 끝난 직후 열차 안에 남은 승객 수를 구하려 한다. 역에는 방문한 순서대로 1번부터 N번까지 번호가 붙어 있다. 각 역에서는 내릴 승객이 먼저 모두 내린 뒤, 탈 승객이 모두 탄다. i번 역에서 내리는 승객 수를 A_i, 타는 승객 수를 B_i라고 한다. A_i는 그 역에 도착했을 때 열차 안에 있는 승객 수를 넘지 않는다. 따라서 기록을 순서대로 처리하면 열차 안의 승객 수가 음수가 되는 일은 없다. 마지막 역에서도 승객이 남아 있을 수 있으며, 모든 승객이 내려야 한다는 조건은 없다. 담당자는 이 기록으로 세 가지 값을 작성한다. 첫 번째 값은 각 역에서 승객의 이동이 모두 끝난 직후의 승객 수 중 최댓값이다. 두 번째 값은 그 최댓값을 처음 기록한 역의 번호이다. 같은 최댓값을 여러 역에서 기록했다면 번호가 가장 작은 역을 선택한다. 세 번째 값은 모든 역에서 승객의 이동이 끝난 직후의 승객 수를 각각 한 번씩 더한 합이다. 세 번째 값은 서로 다른 승객의 수를 뜻하지 않는다. 한 승객이 여러 역을 계속 지나면 해당 승객은 그 역들의 기록에 반복해서 포함된다. 출발 전 승객 수인 0은 합에 따로 더하지 않으며, N번 역의 승객 수는 합에 포함한다. 또한 첫 번째 값은 역 사이의 변화나 하차 직후의 상태가 아니라 승차까지 모두 끝난 상태만 비교하여 구한다. 모든 역의 기록이 0명이라면 최댓값은 0이고 이를 처음 기록한 역은 1번 역이다. 운행 기록을 읽고 세 값을 구하는 프로그램을 작성한다.
입력
첫째 줄에 역의 수 N이 주어진다. 다음 N개 줄 중 i번째 줄에 A_i와 B_i가 공백으로 구분되어 주어진다. 모든 입력값은 정수이며 1≤N≤30,000, 0≤A_i,B_i≤1,000이다. A_i는 i번 역에 도착했을 때의 승객 수 이하임이 보장된다. 열차는 승객이 없는 상태에서 시작한다.
출력
최대 승객 수, 그 최댓값을 처음 기록한 역의 번호, 각 역에서 승객의 이동이 끝난 직후의 승객 수를 모두 더한 값을 이 순서대로 공백으로 구분하여 한 줄에 출력한다. 합은 32비트 부호 있는 정수의 범위를 넘을 수 있다.
예제 입력 1
5 0 4 1 2 3 0 0 3 5 1
예제 출력 1
5 2 17
예제 입력 2
3 0 0 0 0 0 0
예제 출력 2
0 1 0
예제 입력 3
1 0 7
예제 출력 3
7 1 7
힌트 펼치기
- 현재 승객 수에서 내린 사람을 빼고 탄 사람을 더한 뒤, 최댓값과 합을 갱신한다.
관련 서재 장
알고리즘 분류
구현누적 합풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |