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

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

고유 구간

시간 제한3초메모리 제한512 MB

요약
순열에서 각 질의 구간을 포함하면서 값이 연속된 정수 집합을 이루는 가장 짧은 부분 배열을 찾는다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 스택, 누적 합
정답자
아직 제출이 없습니다

문제

11부터 nn까지의 정수로 이루어진 순열 π\pi가 있다. 인덱스 aa와 bb가 1≤a≤b≤n1 \le a \le b \le n을 만족할 때, 연속한 부분 수열 πab=(πa,πa+1,…,πb)\pi_{ab} = (\pi_a, \pi_{a+1}, \dots, \pi_b)를 정렬한 결과가 연속한 정수의 나열이면 이 부분 수열을 구간이라고 부른다. 예를 들어 순열 π=(3,1,7,5,6,4,2)\pi = (3, 1, 7, 5, 6, 4, 2)에서 π36\pi_{36}은 44부터 77까지를 담고 있으므로 구간이지만, π13\pi_{13}은 구간이 아니다.

부분 수열 πxy\pi_{xy}의 고유 구간은 이 부분 수열을 포함하면서(a≤x≤y≤ba \le x \le y \le b) 길이가 가장 짧은 구간 πab\pi_{ab}이다. 구간의 길이는 원소의 개수다. 이런 구간은 항상 하나뿐이다. 겹치는 두 구간의 교집합도 구간이므로, πxy\pi_{xy}를 포함하는 모든 구간의 교집합이 곧 고유 구간이다.

순열 π\pi와 그 부분 수열 mm개가 주어진다. 각 부분 수열의 고유 구간을 구하라.

입력

첫째 줄에 순열 π\pi의 크기 nn (1≤n≤1000001 \le n \le 100000)이 주어진다. 둘째 줄에 서로 다른 정수 π1,π2,…,πn\pi_1, \pi_2, \dots, \pi_n (1≤πj≤n1 \le \pi_j \le n), 즉 순열 자체가 주어진다.

셋째 줄에 부분 수열의 개수 mm (1≤m≤1000001 \le m \le 100000)이 주어진다. 이어지는 mm개 줄 중 jj번째 줄에는 jj번째 부분 수열의 양 끝 인덱스 xjx_j와 yjy_j (1≤xj≤yj≤n1 \le x_j \le y_j \le n)가 주어진다.

출력

mm개 줄을 출력한다. jj번째 줄에는 부분 수열 πxjyj\pi_{x_j y_j}의 고유 구간의 양 끝 인덱스 aja_j와 bjb_j (1≤aj≤bj≤n1 \le a_j \le b_j \le n)를 공백으로 구분해 출력한다.

예제2

  1. 예제 1

    입력
    7
    3 1 7 5 6 4 2
    3
    3 6
    7 7
    1 3
    
    예상 출력
    3 6
    7 7
    1 7
    
  2. 예제 2

    입력
    10
    2 1 4 3 5 6 7 10 8 9
    5
    2 3
    3 7
    4 7
    4 8
    7 8
    
    예상 출력
    1 4
    3 7
    3 7
    3 10
    7 10