정렬 게임

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

요약
길이 A인 접두사를 오름차순으로, 이어 길이 B인 접두사를 내림차순으로 정렬하는 연산을 K번 수행한 뒤 최종 수열을 출력한다.
난이도

어려움10점 중 8점

유형
정렬, 구현, 시뮬레이션, 그리디
정답자
아직 제출이 없습니다

문제

수열을 앞에서부터 일정 길이까지만 오름차순으로 정렬하고, 다시 앞에서부터 일정 길이까지만 내림차순으로 정렬하는 과정을 반복하는 게임이다. 오름차순 정렬 한 번과 내림차순 정렬 한 번을 묶어 한 세트라고 한다.

예를 들어 수열이 [4, 1, 2, 3]이고, 첫 번째 원소부터 세 번째 원소까지 오름차순으로 정렬한 뒤 첫 번째 원소부터 두 번째 원소까지 내림차순으로 정렬하는 세트를 생각해 보자. 오름차순 정렬을 하면 [1, 2, 4, 3]이 되고, 이어서 내림차순 정렬을 하면 [2, 1, 4, 3]이 된다. 이 세트를 끝낸 결과가 [2, 1, 4, 3]이다.

수열과 KK개의 세트가 주어진다. 세트를 주어진 순서대로 모두 진행한 뒤의 수열을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 수열의 길이 NN이 주어진다. (1≤N≤100,0001 \le N \le 100{,}000)

둘째 줄에 수열의 원소 NN개가 공백으로 구분되어 주어진다. 각 원소는 −10,000-10{,}000 이상 10,00010{,}000 이하의 정수이다.

셋째 줄에 세트의 개수 KK가 주어진다. (1≤K≤100,0001 \le K \le 100{,}000)

넷째 줄부터 KK개의 줄에 세트를 나타내는 두 정수 AA, BB가 공백으로 구분되어 주어진다. (1≤A≤N1 \le A \le N, 1≤B≤N1 \le B \le N) 이는 첫 번째 원소부터 AA번째 원소까지 오름차순으로 정렬한 뒤, 첫 번째 원소부터 BB번째 원소까지 내림차순으로 정렬한다는 뜻이다. 세트는 입력에 주어진 순서대로 진행한다.

출력

KK개의 세트를 모두 진행한 뒤 수열의 원소 NN개를 공백으로 구분해 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    4
    4 1 2 3
    1
    3 2
    
    예상 출력
    2 1 4 3
    
  2. 예제 2

    입력
    1
    7
    1
    1 1
    
    예상 출력
    7
    
  3. 예제 3

    입력
    6
    -3 5 -3 10000 -10000 0
    1
    6 6
    
    예상 출력
    10000 5 0 -3 -3 -10000
    
  4. 예제 4

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