아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

더 어려운 스케줄링

면접 대비

시간 제한1초메모리 제한1024 MB

요약
서로 다른 고유번호를 가진 업무 스택에서 맨 앞 추가, 오름차순 정렬, 순서 뒤집기, 맨 앞 꺼내기를 처리하며 꺼낸 값을 출력한다.
난이도

보통10점 중 6점

유형
스택, 연결 리스트, 구현, 정렬
정답자
아직 제출이 없습니다

문제

지환이는 업무에 치여 산다. 하루에도 몇 건인지도 모를 정도로 많은 업무가 들어온다.

각 업무는 양의 정수로 표현되는 고유번호 p_ip\_i (1≤p_i≤N1 \leq p\_i \leq N)를 가지고 있으며, 고유번호는 모두 다르다.

아, 일이 또 추가되었다. 지환이는 결국 일에 치여 과로사해버렸지만, 스케줄링을 하기 위한 기계 ‘지환봇 스케줄러2’는 여전히 정상적으로 작동한다. '지환봇 스케줄러2'는 기본적으로는 스택(stack) 구조, 즉 제일 나중에 들어간 업무가 제일 먼저 처리되는(LIFO, Last in First out) 특성을 가지고 있다.

기본적인 특성과 더불어, '지환봇 스케줄러2'에게 할 수 있는 명령은 다음과 같다.

  • 0,p0\\,p: 고유번호가 pp인 업무를 스케줄러에 추가한다. 특별히 다른 명령이 없는 한, 새로 추가된 일은 스케줄러 상의 맨 앞에 추가된다. 즉, 고유번호 값에 상관없이 스케줄러에서 가장 먼저 처리되어야 하는 업무가 된다.
  • 11: 스케줄러에 들어있는 업무를 고유번호 값 기준으로 오름차순으로 정렬한다. 이 결과, 고유번호 값이 낮은 업무일수록 스케줄러의 앞에 배치된다.
  • 22: 스케줄러에 있는 업무 처리 순서를 뒤집는다. 즉, 스케줄러에 들어가 있는 업무들의 처리 순서가 반대가 된다.
  • 33: 스케줄러에 있는 업무 중 가장 앞에 위치한 업무를 꺼내어 처리하고, 그 고유번호 값을 출력한다. 33번 명령이 들어왔을 때 스케줄러는 비어있지 않으며, 스케줄러에서 꺼내진 업무는 두 번 다시 들어오지 않는다.

'지환봇 스케줄러2'에는 여전히 필요 없어 보이는 기능이 있는 것 같지만, 이전보다 효과적인 업무처리를 하고 있는 것 같다. 주어진 QQ개의 명령을 순서대로 처리해보자.

입력

첫째 줄에 업무의 고유번호 값의 범위 제한 NN과 명령 횟수 QQ가 주어진다. (1≤N,Q≤100,0001\leq N,Q \leq 100\\,000)

둘째 줄부터 QQ개 줄에 걸쳐 명령에 대한 정보가 주어진다.

입력으로 주어지는 모든 수는 정수이다.

출력

33번 명령이 주어질 때마다 각 줄에 답을 출력한다.

예제1

  1. 예제 1

    입력
    5 9
    0 1
    0 2
    0 3
    1
    3
    0 4
    0 5
    2
    3
    
    예상 출력
    1
    3