Empodia

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

요약
순열 생물서열이 주어질 때, 양 끝이 구간의 최솟값과 최댓값이고 더 짧은 framed interval을 포함하지 않는 모든 최소 framed interval을 찾는다.
난이도

어려움10점 중 8점

유형
스택, 배열, 구현, 그리디
정답자
아직 제출이 없습니다

문제

생물학자들은 생물열(biosequence) 을 연구한다. 생물열이란 다음 조건을 모두 만족하는 MM개의 정수로 이루어진 수열이다.

  • 0,1,…,M−10, 1, \dots, M-1 을 각각 정확히 한 번씩 포함한다.
  • 00 으로 시작하고 M−1M-1 로 끝난다.
  • 어떤 값 EE 바로 뒤에 그 값보다 11 큰 값 E+1E+1 이 오는 일이 없다. 즉, 이웃한 두 원소가 이 순서대로 E,E+1E, E+1 이 되는 경우가 없다.

생물열에서 연속한 원소들로 이루어진 부분을 구간(segment) 이라 한다.

어떤 구간의 첫 원소가 그 구간의 최솟값이고, 마지막 원소가 그 구간의 최댓값(이며 첫 원소와 다른 값)이며, 첫 값과 마지막 값 사이의 모든 정수를 그 구간이 포함할 때, 그 구간을 테두리 구간(framed interval) 이라 한다. 바꿔 말하면, 위치 ii 부터 위치 jj 까지의 구간이 테두리 구간이라는 것은 첫 원소가 최솟값, 마지막 원소가 최댓값이고, 구간이 담고 있는 값들이 그 최솟값부터 최댓값까지의 연속한 정수 전체와 정확히 일치한다는 뜻이다.

테두리 구간이 자신보다 짧은 테두리 구간을 하나도 포함하지 않으면, 그 구간을 엠포디오(empodio) 라 한다.

예를 들어 생물열 (0,3,5,4,6,2,1,7)(0, 3, 5, 4, 6, 2, 1, 7) 에서 수열 전체는 테두리 구간이지만, 더 짧은 테두리 구간 (3,5,4,6)(3, 5, 4, 6) 을 포함하므로 엠포디오가 아니다. 반면 (3,5,4,6)(3, 5, 4, 6) 은 자신보다 짧은 테두리 구간을 포함하지 않으므로 엠포디오이며, 이 생물열의 유일한 엠포디오이다.

생물열이 주어질 때, 그 안의 모든 엠포디아(empodia, empodio의 복수형)를 찾아라.

입력

첫째 줄에 생물열의 원소 개수인 정수 MM 이 주어진다. 이어지는 MM 개의 줄에는 각 줄마다 정수가 하나씩 주어지며, 이 정수들이 순서대로 생물열을 이룬다.

출력

첫째 줄에 생물열에 들어 있는 엠포디아의 개수 HH 를 출력한다. 그다음 HH 개의 줄에 각 엠포디오를 시작 위치가 앞선 순서대로 출력한다. 각 줄에는 두 정수 AA 와 BB 를 공백 하나로 구분하여 출력하며, 이는 해당 엠포디오가 생물열의 AA 번째 원소에서 시작하여 BB 번째 원소에서 끝난다는 뜻이다. 위치는 11 부터 센다.

제한

입력 중 정확히 하나에서는 1000000≤M≤11000001000000 \le M \le 1100000 이다. 그 외의 모든 입력에서는 1≤M≤600001 \le M \le 60000 이다.

예제4

  1. 예제 1

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

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

    입력
    11
    0
    2
    1
    3
    9
    8
    7
    4
    6
    5
    10
    
    예상 출력
    2
    1 4
    4 11
    
  4. 예제 4

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