문제 3151 · 비트 II
한 항공편의 예약 장부
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
항공권 예약 서비스를 개발하는 담당자가 한 항공편의 예약 장부를 검사하고 있다. 이 항공편에는 판매할 수 있는 좌석이 처음에 S개 있으며, 검사 시작 시점에는 예약된 좌석이 없다. 모든 좌석의 항공권 가격은 P원으로 같고, 검사 도중 가격이 바뀌지 않는다. 장부에는 예약 요청과 취소 요청이 발생한 순서대로 적혀 있다. 요청 한 줄은 종류와 좌석 수 q로 이루어진다. 종류가 BUY이면 q개의 좌석을 새로 예약하려는 요청이고, CANCEL이면 이미 예약된 좌석 중 q개를 취소하려는 요청이다. 이 장부는 전체 좌석 수를 검사하기 위한 자료이므로 요청자의 신원이나 좌석 번호는 따로 다루지 않는다. BUY 요청을 처리할 때 남은 좌석이 q개 이상이면 요청 전체를 승인한다. 승인하면 남은 좌석 수를 q만큼 줄이고, 받은 금액에 q 곱하기 P원을 더한다. 남은 좌석이 q개보다 적으면 요청 전체를 거절한다. 일부 좌석만 예약해 주는 처리는 하지 않는다. CANCEL 요청을 처리할 때 현재 예약된 좌석이 q개 이상이면 요청 전체를 승인한다. 승인하면 남은 좌석 수를 q만큼 늘리고, 받은 금액에서 q 곱하기 P원을 빼서 전액을 환불한다. 현재 예약된 좌석이 q개보다 적으면 요청 전체를 거절한다. 취소 수수료는 없으며, 취소로 돌아온 좌석은 뒤에 나오는 예약 요청에서 다시 판매할 수 있다. 거절한 요청은 좌석 수와 금액을 전혀 바꾸지 않는다. 모든 요청은 반드시 입력 순서대로 한 번씩 처리하며, 뒤의 요청을 보고 앞의 승인 결과를 바꾸지 않는다. 마지막 요청까지 처리한 뒤 남은 좌석 수와 최종적으로 보유한 금액을 구해야 한다. 최종 보유 금액은 승인한 예약으로 받은 금액에서 승인한 취소로 환불한 금액을 뺀 값이다.
입력
첫째 줄에 정수 S, P, N이 공백으로 구분되어 주어진다. 1 ≤ S ≤ 1,000 1 ≤ P ≤ 1,000,000 1 ≤ N ≤ 1,000 다음 N개 줄에 요청 종류와 정수 q가 공백으로 구분되어 주어진다. 요청 종류는 BUY 또는 CANCEL이며, 1 ≤ q ≤ 1,000이다. 승인할 수 없는 요청도 입력될 수 있다.
출력
모든 요청을 처리한 뒤 남은 좌석 수와 최종 보유 금액을 공백으로 구분하여 한 줄에 출력한다. 금액은 원 단위 정수로 출력한다.
예제 입력 1
5 12000 5 BUY 3 BUY 4 CANCEL 2 BUY 4 CANCEL 6
예제 출력 1
0 60000
예제 입력 2
2 7000 3 CANCEL 1 BUY 3 BUY 1
예제 출력 2
1 7000
예제 입력 3
4 9000 2 BUY 4 CANCEL 4
예제 출력 3
4 0
힌트 펼치기
- 현재 예약된 좌석 수는 전체 좌석 수에서 남은 좌석 수를 뺀 값이다.
알고리즘 분류
구현조건문풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |