참조로 받는 재고 장부
창고 재고를 물건 이름 → 개수로 std::map에 담고, 명령 n개를 차례로 처리하라.
명령마다 함수를 하나씩 만들고, 재고를 바꾸는 함수는 map을 참조(&)로, 읽기만 하는 함수는 const 참조로 받는다.
- add 이름 k: 그 물건을 k개 더하고, 더한 뒤 개수를 출력한다.
- get 이름: 그 물건의 개수를 출력한다.
없는 물건이면 0을 출력하고, 장부에 새로 적지 않는다.
- use 이름 k: 그 물건이 k개 이상 있으면 k개를 빼고 남은 개수를 출력한다.
남은 개수가 0이 되면 그 물건을 장부에서 지운다.
k개보다 적거나 없는 물건이면 아무것도 바꾸지 않고 -1을 출력한다.
모든 명령이 끝나면 장부에 남은 물건의 수 m을 출력하고, 이어서 m줄에 "이름 개수"를 이름의 사전 순(영어 소문자 문자열 비교)으로 출력한다.
- 입력
- 첫 줄에 n(1 ≤ n ≤ 1000), 다음 n줄에 명령 하나씩.
이름은 영어 소문자 1~10글자, 1 ≤ k ≤ 1000 - 출력
- 명령마다 한 줄, 그다음 m, 그다음 m줄의 "이름 개수"
7 add apple 5 add kiwi 2 get pear use apple 3 use kiwi 5 use kiwi 2 get apple
5 2 0 2 -1 0 2 1 apple 2