문제 3213 · 비트 II
항공권 단체 창구 정산
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
항공권 예약 서비스의 백엔드 담당자는 한 단체 고객이 같은 항공편에 보낸 요청을 차례대로 처리한다. 이 창구에서는 모든 좌석의 항공권 가격이 P원으로 같고, 처음에는 판매 가능한 좌석이 S개 있다. 다른 고객의 요청은 처리 중에 들어오지 않으며, 이 단체가 처음부터 보유한 항공권은 없다. 요청은 예약과 취소의 두 종류이다. 각 요청에는 항공권 수 Q가 함께 적혀 있다. 요청은 입력된 순서대로 처리해야 하며, 앞선 요청의 처리 결과가 다음 요청에서 사용할 수 있는 좌석 수와 보유 항공권 수를 바꾼다. 각 요청은 전체를 처리하거나 전체를 거절한다. 일부 수량만 처리하는 일은 없다. 예약 요청이 들어오면 판매 가능한 좌석 수가 Q 이상인지 확인한다. 충분하다면 Q장을 예약하고 Q에 P를 곱한 금액을 고객에게 받는다. 판매 가능한 좌석 수는 Q만큼 줄고 고객의 보유 항공권 수는 Q만큼 늘어난다. 좌석이 부족하면 요청 전체를 거절하며, 좌석 수와 보유 수량 및 정산 금액은 모두 변하지 않는다. 취소 요청이 들어오면 고객의 보유 항공권 수가 Q 이상인지 확인한다. 충분하다면 Q장을 취소하고 항공권 한 장당 P에서 F를 뺀 금액을 환불한다. 여기서 F는 한 장당 취소 수수료이다. 판매 가능한 좌석 수는 Q만큼 늘고 고객의 보유 항공권 수는 Q만큼 줄어든다. 보유한 항공권이 부족하면 요청 전체를 거절하며 어떤 값도 바꾸지 않는다. 모든 항공권의 가격과 취소 수수료가 같으므로 취소할 항공권의 예약 시점을 구분할 필요는 없다. 취소로 돌아온 좌석은 바로 다음 요청부터 다시 예약할 수 있다. 최종 순수입은 성공한 예약으로 받은 금액의 합에서 성공한 취소로 환불한 금액의 합을 뺀 값이다. 별도 세금이나 예약 수수료는 없다. 모든 요청을 처리한 뒤 판매 가능한 좌석 수와 최종 순수입을 구한다. 성공한 요청이 하나도 없으면 좌석 수는 S이고 순수입은 0원이다.
입력
첫째 줄에 정수 S, P, F, N이 공백으로 구분되어 주어진다. 1 ≤ S ≤ 1,000 1 ≤ P ≤ 100,000 0 ≤ F ≤ P 0 ≤ N ≤ 1,000 다음 N개 줄에는 요청 종류 T와 수량 Q가 공백으로 구분되어 주어진다. T는 1 또는 2이며, 1은 예약 요청이고 2는 취소 요청이다. 1 ≤ Q ≤ 1,000 모든 금액의 단위는 원이다.
출력
모든 요청을 처리한 뒤 판매 가능한 좌석 수와 최종 순수입을 이 순서대로 공백 하나로 구분하여 출력한다. 두 값은 모두 정수로 출력한다.
예제 입력 1
5 1000 200 5 1 3 1 4 2 2 1 4 2 6
예제 출력 1
0 5400
예제 입력 2
3 700 0 4 2 1 1 3 2 3 1 4
예제 출력 2
3 0
예제 입력 3
2 900 900 2 1 2 2 2
예제 출력 3
2 1800
힌트 펼치기
- 현재 남은 좌석 수와 고객이 보유한 항공권 수를 관리한다.
- 예약은 좌석이 충분할 때, 취소는 보유 항공권이 충분할 때만 정산 금액을 바꾼다.
- 취소할 때 순수입에서 빼는 금액은 Q × (P - F)이다.
알고리즘 분류
구현시뮬레이션조건문풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |