그룹 안에서의 등수
면접 대비시간 제한5초메모리 제한256 MB
학생 그룹을 합치는 중간에 질의로 주어진 학생이 속한 그룹 안에서 점수 순위를 구합니다.
문제
학생 명이 있다. 인 각 에 대해 번 학생은 시험에서 점을 받는다. 학생들은 여러 그룹으로 나뉘어 있고, 처음에는 번 그룹에 번 학생 한 명만 있다.
다음 두 연산을 처리하는 프로그램을 작성하시오.
- 그룹 합치기: 그룹 번호 와 가 주어지면 번 그룹의 학생을 모두 번 그룹으로 옮긴다. 합친 뒤에는 번 그룹이 없어진다.
- 질의: 학생 번호 가 주어지면 번 학생이 속한 그룹에서 번 학생의 등수를 구한다. 한 그룹에서 점수가 가장 높은 학생이 1등, 두 번째로 높은 학생이 2등이고, 그 뒤도 같은 방식이다.
각 테스트 케이스에는 연산이 개 주어진다.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다 (). 이어서 각 테스트 케이스가 다음 형식으로 주어진다.
테스트 케이스의 첫째 줄에는 두 정수 과 이 주어진다 (, ).
다음 개 줄에는 연산이 한 줄에 하나씩 주어진다. 각 줄은 연산의 종류를 나타내는 정수 로 시작한다.
- 이면 같은 줄에 정수 와 가 더 주어진다. 번 그룹의 학생을 번 그룹으로 합친다.
- 이면 정수 가 하나 더 주어진다. 번 학생이 속한 그룹에서 그 학생의 등수를 출력한다.
합치기 연산에 주어지는 두 그룹은 모두 아직 남아 있는 그룹이고, 와 는 서로 다르다.
출력
질의 연산마다 그 학생의 등수를 한 줄에 하나씩 출력한다. 모든 테스트 케이스의 답을 질의가 주어진 순서대로 이어서 출력한다.