본문으로 이동
코드패스 by Devin.KR

문제 4484 · 바이트 III

품절 응답과 정산 기록

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

배달 앱의 백엔드에서 한 매장의 입고 기록과 주문 요청을 처리하려 한다. 매장은 N종류의 상품을 판매하며 상품 번호는 1부터 N까지다. 각 상품에는 처음 보유한 재고 수량과 한 개의 판매 가격이 정해져 있다. 판매 가격은 모든 기록을 처리하는 동안 바뀌지 않는다. 처리할 기록은 입고와 주문의 두 종류다. 입고 기록에는 상품 번호와 입고 수량이 들어 있다. 입고를 처리하면 해당 상품의 재고에 입고 수량을 더한다. 입고는 항상 성공하며, 입고 자체로 정산 금액이 늘어나지는 않는다. 서로 다른 상품의 재고는 독립적으로 관리한다. 주문 기록에는 상품 번호와 주문 수량이 들어 있다. 주문을 처리하는 시점의 해당 상품 재고가 주문 수량 이상이면 주문을 승인한다. 승인한 주문은 재고에서 주문 수량을 빼고, 상품 한 개의 판매 가격에 주문 수량을 곱한 값을 누적 정산 금액에 더한다. 재고와 주문 수량이 같아도 승인하며, 이 경우 해당 상품의 재고는 0이 된다. 재고가 주문 수량보다 적으면 주문을 거절한다. 거절한 주문은 일부 수량만 판매하지 않으며, 재고와 누적 정산 금액을 모두 그대로 둔다. 나중에 상품이 입고되더라도 이미 거절한 주문을 다시 처리하지 않는다. 승인하거나 거절한 주문 하나는 각각 주문 건수 한 건으로 센다. 주문 수량을 건수로 세지 않는다. 모든 기록은 입력된 순서대로 한 번씩 처리한다. 할인, 배달비, 취소, 환불은 없으며 처음 누적 정산 금액은 0원이다. 백엔드의 처리 결과를 확인할 수 있도록 승인한 주문 건수, 거절한 주문 건수, 누적 정산 금액과 상품별 최종 재고를 구한다. 주문 기록이 없다면 두 주문 건수와 누적 정산 금액은 모두 0이다.

입력

첫째 줄에 정수 N과 M이 공백으로 주어진다. 다음 N개 줄의 i번째 줄에는 i번 상품의 초기 재고 S_i와 판매 가격 P_i가 주어진다. 다음 M개 줄에는 정수 t, i, q가 주어진다. t가 1이면 i번 상품 q개를 입고하며, t가 2이면 i번 상품 q개의 주문을 처리한다.
1 ≤ N ≤ 1,000
0 ≤ M ≤ 25,000
0 ≤ S_i ≤ 999
1 ≤ P_i ≤ 1,000,000
1 ≤ t ≤ 2
1 ≤ i ≤ N
1 ≤ q ≤ 999
모든 수는 정수이며 금액의 단위는 원이다.

출력

첫째 줄에 승인한 주문 건수, 거절한 주문 건수, 누적 정산 금액을 공백으로 구분하여 출력한다. 둘째 줄에 1번 상품부터 N번 상품까지의 최종 재고를 공백으로 구분하여 출력한다. 모든 값은 정수로 출력한다.

예제 입력 1

2 5
3 120
0 250
2 1 2
2 2 1
1 2 4
2 2 3
2 1 2

예제 출력 1

2 2 990
1 1

예제 입력 2

1 3
0 700
2 1 1
1 1 2
2 1 2

예제 출력 2

1 1 1400
0

예제 입력 3

2 0
0 10
5 20

예제 출력 3

0 0 0
0 5
힌트 펼치기
  • 주문을 승인할 수 있는지 먼저 확인한 뒤 재고와 정산 금액을 함께 갱신한다.

출처: Devin.KR 자체 제작

알고리즘 분류구현배열시뮬레이션

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)