어려운 스케줄링
시간 제한1초메모리 제한1024 MB
작업을 맨 앞에 넣기, ID 오름차순 정렬, 뒤집기 명령을 순서대로 적용한 뒤 k번째로 처리되는 작업의 ID를 구합니다.
문제
지환이는 업무에 치여 산다. 하루에도 몇 건인지 셀 수 없을 만큼 많은 업무가 들어온다.
각 업무는 양의 정수 고유번호 ()를 가진다. 고유번호는 모두 서로 다르다.
일이 또 추가되었다. 참다못한 지환이는 스케줄링을 하는 기계 '지환봇 스케줄러'를 만들었지만, 제대로 만들지는 못한 것 같다. 지환봇 스케줄러는 기본적으로 스택 구조다. 즉, 나중에 들어간 업무가 먼저 처리되는 LIFO(Last In First Out) 방식으로 동작한다.
기본 동작 외에 지환봇 스케줄러에 내릴 수 있는 명령은 다음과 같다.
0 p: 고유번호가 인 업무를 스케줄러에 추가한다. 별도의 명령이 없으면 새로 추가된 업무가 스케줄러의 맨 앞에 놓인다. 고유번호와 상관없이 가장 먼저 처리해야 하는 업무가 된다.1: 스케줄러에 있는 업무를 고유번호 기준 오름차순으로 정렬한다. 고유번호가 작은 업무일수록 스케줄러의 앞에 놓인다.2: 스케줄러에 있는 업무의 처리 순서를 뒤집는다. 스케줄러에 들어 있는 업무들의 처리 순서가 반대가 된다.
지환봇 스케줄러에 쓸모없어 보이는 기능이 있는 것 같지만, 지환이는 이전보다 업무를 더 효율적으로 처리할 수 있을 것으로 기대한다. 주어진 개의 명령을 순서대로 처리한 뒤, 번째로 처리해야 하는 업무의 고유번호를 구하라.
입력
첫째 줄에 업무 고유번호의 범위 , 명령 횟수 , 그리고 가 주어진다. (, 0번 명령의 등장 횟수)
둘째 줄부터 개의 줄에 명령이 한 줄에 하나씩 주어진다.
입력되는 모든 수는 정수다.
출력
모든 명령을 순서대로 적용한 뒤, 번째로 처리하게 될 업무의 고유번호를 출력한다.