문제 3309 · 비트 III
보충 수조의 넘친 물
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 수족관은 전시 수조에 공급할 물을 작은 보충 수조에 모아 둔다. 보충 수조에 담을 수 있는 물의 최대량은 C리터이며, 작업을 시작할 때에는 W리터가 들어 있다. 담당자는 N차례에 걸쳐 물을 보충하고 사용한다. 각 차례에는 넣을 물의 양과 꺼내려고 하는 물의 양이 정해져 있다. 한 차례의 작업은 반드시 물을 넣는 단계부터 시작한다. 보충 수조에 A리터를 한꺼번에 넣었을 때 물의 양이 C리터를 초과하면, 초과한 물은 모두 배수구로 흘러 나간다. 이때 보충 수조에는 정확히 C리터만 남는다. 넣은 뒤의 물의 양이 C리터 이하라면 배수구로 흘러 나가는 물은 없다. 배수구로 나간 물은 다시 회수하지 않는다. 물을 넣고 넘친 물을 처리한 다음에는 보충 수조에서 B리터를 꺼내 전시 수조에 공급하려고 한다. 남아 있는 물이 B리터 이상이면 정확히 B리터를 꺼낸다. 남아 있는 물이 B리터보다 적다면 남은 물을 전부 꺼내며, 보충 수조는 빈 상태가 된다. 부족한 양을 다른 곳에서 채우거나 다음 차례에 추가로 꺼내지는 않는다. 이 두 단계를 마치고 남은 물은 다음 차례로 그대로 이어진다. 작업 사이에 증발하거나 새는 물은 없으며, 물의 양은 항상 정수 리터 단위다. 전시 수조로 꺼낸 물은 배수구로 흘러 나간 물에 포함하지 않는다. 마지막 작업이 끝난 뒤 보충 수조에 남아 있는 물 역시 넘친 물에 포함하지 않는다. N차례의 작업 중 배수구로 흘러 나간 물의 총량을 구한다. 한 번도 넘치지 않았다면 총량은 0리터다.
입력
첫째 줄에 정수 N, C, W가 공백으로 구분되어 주어진다. 1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000, 0 ≤ W ≤ C다. 다음 N개의 줄에 각 차례의 정수 A와 B가 작업 순서대로 주어진다. 0 ≤ A, B ≤ 1,000이다.
출력
모든 작업에서 배수구로 흘러 나간 물의 총량을 리터 단위의 정수 하나로 출력한다. 넘친 물이 없다면 0을 출력한다.
예제 입력 1
3 10 6 7 4 3 12 15 2
예제 출력 1
8
예제 입력 2
2 5 0 3 5 5 5
예제 출력 2
0
예제 입력 3
2 4 4 4 0 4 4
예제 출력 3
8
힌트 펼치기
- 물을 넣은 직후 용량을 초과한 만큼만 정답에 더한다. 물을 꺼낸 뒤에는 남은 양이 음수가 되지 않게 한다.
관련 서재 장
알고리즘 분류
구현반복누적풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |