문제 3995 · 비트 I
운동 이용권의 남은 시간
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 헬스장에서는 회원의 운동 이용권을 분 단위의 잔액으로 관리한다. 이용권에는 최대 K분까지 저장할 수 있고, 기록을 처리하기 직전에는 S분이 남아 있다. 회원은 여러 날에 걸쳐 이용권을 충전하고 운동을 신청한다. 관리 프로그램은 날짜 순서대로 주어진 기록을 처리하여 실제로 진행한 운동 횟수와 마지막 잔액을 구해야 한다. 각 날짜의 기록에는 충전 시간 A와 신청한 운동 시간 B가 적혀 있다. 그날은 반드시 충전을 먼저 처리한다. 기존 잔액에 A를 더한 값이 K보다 크면 잔액은 K가 되고, 초과한 시간은 버린다. 초과분은 다음 날로 넘기거나 나중에 되돌려 받을 수 없다. 합이 K 이하이면 더한 값이 그대로 새 잔액이 된다. A가 0인 날에도 같은 규칙을 적용한다. 충전 처리가 끝나면 그날 신청한 운동을 처리한다. 잔액이 B 이상이면 운동을 한 번 진행하고 잔액에서 B를 뺀다. 잔액이 B와 정확히 같을 때도 운동을 진행하며, 이때 남은 잔액은 0이다. 잔액이 B보다 작으면 운동을 진행하지 않고 잔액도 차감하지 않는다. 부족한 시간만큼 짧게 운동하는 경우는 없으며, 진행하지 못한 신청은 다음 날로 이월되지 않는다. 하루에는 기록이 정확히 하나 있고, 각 기록에는 운동 신청도 정확히 한 번 포함된다. 날짜 사이에 별도의 충전이나 차감은 발생하지 않는다. 모든 시간을 정수로 처리하며 소수점 계산은 필요하지 않다. 운동을 한 번도 진행하지 못할 수도 있고, 모든 기록을 처리한 뒤 잔액이 0일 수도 있다. 이러한 경우에도 같은 출력 형식을 사용하여 두 값을 모두 출력한다.
입력
첫째 줄에 정수 N, K, S가 공백으로 구분되어 주어진다. 다음 N개의 줄에는 날짜 순서대로 정수 A, B가 공백으로 구분되어 주어진다. 1 ≤ N ≤ 1,000, 1 ≤ K ≤ 1,000, 0 ≤ S ≤ K이다. 각 기록에서 0 ≤ A ≤ 1,000, 1 ≤ B ≤ K이다.
출력
진행한 운동 횟수와 모든 기록을 처리한 뒤 남은 이용권 시간을 공백으로 구분하여 한 줄에 출력한다. 진행한 운동이 없으면 횟수는 0으로 출력한다.
예제 입력 1
4 10 3 4 5 0 3 10 6 2 6
예제 출력 1
3 0
예제 입력 2
3 5 0 0 1 1 3 0 2
예제 출력 2
0 1
예제 입력 3
2 5 5 5 5 0 1
예제 출력 3
1 0
힌트 펼치기
- 각 날짜마다 충전, 저장 한도 적용, 운동 가능 여부 확인 순서로 처리한다.
관련 서재 장
알고리즘 분류
구현시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |