문제 4119 · 비트 I
주차권 창구의 마감
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 주차장에서는 주변 상점에 일회용 주차권을 묶음으로 판매한다. 백엔드 담당자는 하루 동안 들어온 주문 기록을 순서대로 처리하여, 창구가 마감된 뒤 남은 주차권 수와 총 판매 금액을 구하려 한다. 주차권은 모두 같은 종류이며 한 장의 정상 가격은 P원이다. 영업을 시작할 때 보유한 주차권은 S장이고, 영업 중에 주차권을 추가로 공급받거나 판매한 주차권을 돌려받는 일은 없다. 각 주문에는 구매하려는 주차권 수가 하나의 양의 정수로 기록되어 있다. 주문을 처리하는 순간 남은 주차권 수가 주문 수량 이상이면 주문 전체를 승인하고, 그 수량만큼 재고를 줄인다. 남은 주차권이 부족하면 주문 전체를 거절한다. 일부 수량만 판매하는 일은 없으며, 거절된 주문은 재고와 판매 금액에 아무 영향도 주지 않는다. 거절된 주문을 나중에 다시 처리하지도 않는다. 한 번에 K장 이상을 주문한 고객에게는 주차권 한 장마다 D원을 할인한다. 따라서 승인된 주문의 수량이 K 이상이면 한 장의 판매 가격은 P-D원이고, K 미만이면 P원이다. 할인 여부는 그 주문의 수량만으로 결정한다. 앞선 주문들의 수량을 합치거나, 주문을 승인한 뒤 남은 재고를 기준으로 할인하지 않는다. 할인으로 결제 금액이 0원이 되는 주문도 정상적으로 승인하여 재고를 줄인다. 모든 주문은 입력에 주어진 순서대로 정확히 한 번씩 처리한다. 최초 재고가 0장이거나 모든 주문이 거절되는 경우도 있다. 이때도 같은 규칙을 적용한다. 마감 시점에 남은 주차권 수와, 승인된 주문에서 받은 금액의 합을 출력하는 프로그램을 작성한다.
입력
첫째 줄에 정수 S, P, K, D, N이 공백으로 구분되어 주어진다. 0≤S≤1,000, 1≤P≤10,000, 1≤K≤1,000, 0≤D≤P, 1≤N≤1,000이다. 다음 N개의 줄에는 주문 수량을 나타내는 정수 Q가 하나씩 주어진다. 1≤Q≤1,000이다.
출력
남은 주차권 수와 총 판매 금액을 이 순서대로 한 줄에 공백으로 구분하여 출력한다. 승인된 주문이 없으면 총 판매 금액은 0이다.
예제 입력 1
10 100 4 20 4 3 8 4 3
예제 출력 1
0 920
예제 입력 2
5 70 2 70 3 6 2 3
예제 출력 2
0 0
힌트 펼치기
- 재고가 충분한 주문에 대해서만 금액과 재고를 갱신한다.
알고리즘 분류
구현시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |