SOJ ONLINE JUDGE

C++ Map

난이도: Silver IV 출제자: rlatjwls7882 시간 제한: 1000 ms 메모리 제한: 512 MB
자료 구조해시를 사용한 집합과 맵구현

처음에 빈 맵 $M$이 있다.

$Q$개의 쿼리를 순서대로 처리하라.

쿼리는 다음 중 하나이다.

  • insert k v: $M$에 키 $k$와 값 $v$를 저장한다. $(-10^9 \leq k,v \leq 10^9)$
  • erase k: $M$에서 키 $k$를 삭제한다. $(-10^9 \leq k \leq 10^9)$
  • count k: $M$에 키 $k$가 있으면 1, 없으면 0을 출력한다. $(-10^9 \leq k \leq 10^9)$
  • get k: $M$에 키 $k$가 있으면 대응하는 값을, 없으면 -1을 출력한다. $(-10^9 \leq k \leq 10^9)$
  • size: $M$에 저장된 키의 개수를 출력한다.

이미 있는 키를 추가하면 값을 새로 주어진 값으로 바꾸고, 없는 키를 삭제하면 아무 일도 일어나지 않는다.

입력

첫 번째 줄에 쿼리의 개수 $Q$가 주어진다. $(1 \leq Q \leq 100\,000)$

두 번째 줄부터 $Q$개의 줄에 걸쳐 쿼리가 하나씩 주어진다.

출력

count, get, size 쿼리마다 결과를 한 줄에 하나씩 출력한다.

예제 입력 1

13
size
insert 3 10
get 3
count 3
insert 3 20
get 3
size
insert 5 -7
size
erase 3
count 3
get 3
get 5

예제 출력 1

0
10
1
20
1
2
0
-1
-7

제출