순열에서 각 질의 구간을 포함하면서 값이 연속된 정수 집합을 이루는 가장 짧은 부분 배열을 찾는다.
어려움9세그먼트 트리스택누적 합아직 제출이 없습니다시간 제한3초메모리 제한512 MB1부터 n까지의 정수로 이루어진 순열 π가 있다. 인덱스 a와 b가 1≤a≤b≤n을 만족할 때, 연속한 부분 수열 πab=(πa,πa+1,…,πb)를 정렬한 결과가 연속한 정수의 나열이면 이 부분 수열을 구간이라고 부른다. 예를 들어 순열 π=(3,1,7,5,6,4,2)에서 π36은 4부터 7까지를 담고 있으므로 구간이지만, π13은 구간이 아니다.
부분 수열 πxy의 고유 구간은 이 부분 수열을 포함하면서(a≤x≤y≤b) 길이가 가장 짧은 구간 πab이다. 구간의 길이는 원소의 개수다. 이런 구간은 항상 하나뿐이다. 겹치는 두 구간의 교집합도 구간이므로, πxy를 포함하는 모든 구간의 교집합이 곧 고유 구간이다.
순열 π와 그 부분 수열 m개가 주어진다. 각 부분 수열의 고유 구간을 구하라.
첫째 줄에 순열 π의 크기 n (1≤n≤100000)이 주어진다. 둘째 줄에 서로 다른 정수 π1,π2,…,πn (1≤πj≤n), 즉 순열 자체가 주어진다.
셋째 줄에 부분 수열의 개수 m (1≤m≤100000)이 주어진다. 이어지는 m개 줄 중 j번째 줄에는 j번째 부분 수열의 양 끝 인덱스 xj와 yj (1≤xj≤yj≤n)가 주어진다.
m개 줄을 출력한다. j번째 줄에는 부분 수열 πxjyj의 고유 구간의 양 끝 인덱스 aj와 bj (1≤aj≤bj≤n)를 공백으로 구분해 출력한다.