페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#4736

수열과 쿼리2 3s 256MB

문제

양의 정수 값을 원소로 갖고 오름차순으로 관리되는 수열이 있다.

수열의 초기 상태는 비어있으며, 쿼리를 통해 수열에 값이 추가되고 삭제되고 변경된다.

쿼리마다 아래 5가지 명령 중 한개의 명령 정보가 주어지면 명령에 맞는 작업을 수행해야 한다.

 

명령1 : "insert x"

수열에 값이 x인 원소를 추가한다.

만약, x인 원소가 이미 수열에 존재하면 추가하지 않는다.

 

명령2 : "erase x"

수열에 x인 원소가 있으면 수열에서 삭제한다.

 

명령3 : "update x y"

수열에 x인 원소가 있으면 y로 변경한다.

만약, y인 원소가 이미 있으면 아무것도 수행하지 않는다.

변경 후에도 오름차순으로 수열이 유지되어야 한다.

 

명령4 : "front c"

수열의 맨 앞에서부터 c번째 값을 출력한다.

만약, 수열의 원소가 c개보다 작으면 마지막 원소 값을 출력하고, 수열이 비어있으면 'empty'를 출력한다.​ 

 

명령5 : "back c"

수열의 맨 뒤에서부터 c번째 값을 출력한다.

만약, 수열의 원소가 c개보다 작으면 첫번째 원소 값을 출력하고, 수열이 비어있으면 'empty'를 출력한다.​ 


입력

첫 줄에 테스트 케이스 T(1~5)가 입력된다.

각 테스트 케이스의 첫 번째 줄에 쿼리수 Q(1~100)가 입력된다.

각 테스트 케이스의 두 번째 줄부터 Q개 줄에 걸쳐 명령이 한줄씩 입력된다.

쿼리 별로 명령 정보와 명령에 필요한 int 범위의 양의 정수 값(들)이 입력된다.

명령 정보는 'insert' , 'erase' , 'update' , 'front' , 'back' 5가지 문자열 중 하나로 주어진다.


출력

'front', 'back' 명령을 수행한 결과를 한 줄에 한 개씩 출력한다.​


예제

1

16
insert 5
insert 10
insert 20
front 1
front 5
back 3
back 5
erase 10
update 5 30
front 1
back 2
erase 30
erase 20
erase 1
front 3
back 3
5

20
5
5
20
20
empty
empty

출처

teriusu

로그인해야 코드를 작성할 수 있어요.