문제 4601 · 바이트 II
다시 집계하는 완주 기록
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
마라톤 대회의 운영 서버에는 참가자의 완주 기록을 등록하거나 취소하는 로그가 쌓인다. 기록 측정 장비의 값을 확인한 운영자가 같은 참가자의 기록을 다시 등록할 수도 있으므로, 로그에 등장한 모든 완주 시간을 그대로 더해서는 현재 현황을 알 수 없다. 백엔드 담당자는 로그를 처음부터 재생하여 최종 완주 현황을 만드는 작업을 맡았다. 각 참가자는 양의 정수인 배번호로 구별한다. 로그 한 줄은 등록 또는 취소 중 하나이며, 줄 안에는 공백이 없다. 등록 로그는 B+T 형식이다. B는 배번호이고 T는 완주 시간이다. 이 로그를 처리하면 해당 참가자의 현재 완주 시간이 T가 된다. 이미 등록된 시간이 있으면 새 시간으로 완전히 덮어쓴다. T가 기존 시간보다 크더라도 똑같이 덮어써야 한다. 완주 시간 0도 유효한 기록으로 취급한다. 취소 로그는 B- 형식이다. 이 로그를 처리하면 해당 참가자의 현재 완주 기록을 없앤다. 현재 기록이 없는 참가자에 대한 취소는 아무 변화도 만들지 않는다. 취소된 참가자라도 뒤에 등록 로그가 나타나면 다시 완주자로 집계한다. 모든 로그의 순서는 입력에 주어진 순서이며, 별도의 시각이나 우선순위는 없다. 작업을 시작할 때 등록된 완주 기록은 하나도 없다. 모든 로그를 처리한 뒤 기록이 남아 있는 참가자의 수와 그들의 완주 시간 합을 구한다. 또한 현재 완주 시간이 가장 작은 참가자를 대표 완주자로 정한다. 가장 작은 시간이 같은 참가자가 여러 명이면 배번호가 가장 작은 참가자를 선택한다. 대표 완주자는 과거에 한 번이라도 빨랐던 참가자가 아니라 최종 기록을 기준으로 정해야 한다. 완주 기록이 하나도 남지 않았다면 참가자 수와 시간 합은 모두 0이며, 대표 완주자가 없다는 표시를 출력한다.
입력
첫째 줄에 로그 수를 나타내는 정수 N이 주어진다. 1≤N≤100,000이다. 다음 N개 줄에 로그가 하나씩 주어진다. 각 줄은 B+T 또는 B- 형식이다. B와 T는 앞에 불필요한 0이 없는 십진 정수이며, 1≤B≤1,000,000,000, 0≤T≤1,000,000,000이다. 줄 안에 공백은 없다.
출력
첫째 줄에 최종 완주자 수와 최종 완주 시간의 합을 공백으로 구분하여 출력한다. 완주자가 있으면 둘째 줄에 대표 완주자의 배번호와 최종 완주 시간을 공백으로 구분하여 출력한다. 완주자가 없으면 둘째 줄에 NONE을 출력한다.
예제 입력 1
7 12+80 7+65 12+60 7- 9+60 30- 7+90
예제 출력 1
3 210 9 60
예제 입력 2
4 3- 8+0 8- 3-
예제 출력 2
0 0 NONE
예제 입력 3
3 4+10 2+10 4+25
예제 출력 3
2 35 2 10
힌트 펼치기
- 배번호를 키로 하고 현재 완주 시간을 값으로 하는 자료구조를 사용한다.
- 대표 완주자는 모든 로그를 처리한 뒤 최종 기록에서 선택해도 된다.
알고리즘 분류
로그 파싱해시집계풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |