문제
'A' ~ 'J' 로 분류되는 10개의 그룹이 있다.
아래와 같은 명령이 수행된다.
- 각 그룹에 1~200,000 범위의 값 x가 추가되고, 삭제된다. x는 존재하는 경우 전체 그룹에서 한 개만 존재한다.
- 그룹의 모든 값이 다른 그룹으로 이동한다.
- 각 그룹에 존재하는 가장 작은 값을 알고 싶다.
1. add x gid 200,000회
x인 값을 gid 그룹의 끝에 추가한다.
x가 중복되는 경우는 없다.
2. remove x 10,000회
x인 값을 제거한다.
유효하지 않은 입력은 주어지지 않는다.
3. move gid1 gid2 100,000회
gid1 그룹의 모든 값을 gid2 그룹으로 이동한다
유효하지 않은 입력은 주어지지 않는다.
4. get gid 100회
gid 그룹에 존재하는 값 중 가장 작은 값을 출력한다.
존재하는 값이 없다면 -1을 출력한다.
유효하지 않은 입력은 주어지지 않는다.
입력
첫째 줄에 쿼리 수 Q가 입력된다.
둘째 줄부터 Q개의 줄에 걸쳐 명령이 주어진다.
Q <= 310,100
1 <= x <= 200,000
'A' <= gid <= 'J'
출력
get 명령에 대한 결과 값을 한 줄씩 출력 한다.
예제
15
add 1 A
add 2 B
add 3 B
add 4 B
add 5 B
add 6 A
add 7 C
add 8 C
get B
move A B
get B
remove 1
move B C
get B
get C
2
1
-1
2
힌트
출처
teriusu