만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

판도라의 상자

시간 제한2초메모리 제한1024 MB

요약
산의 높이 배열이 주어질 때, 양 끝 높이가 같은 구간에 연산을 적용해 높이를 비감소로 만드는 최소 연산 횟수와 각 구간을 구하는 문제입니다.
난이도

어려움10점 중 9점

유형
동적 계획법, 해시맵, 구간
정답자
아직 제출이 없습니다

문제

크라토스는 전쟁의 신 아레스를 쓰러뜨리기 위해 판도라의 상자에 도달해야 합니다. 상자는 소유자에게 진정한 신의 힘을 줄 수 있습니다. 안타깝게도 상자는 판도라 신전의 깊숙한 곳에 있고, 신전으로 가는 길에는 nn개의 산이 있습니다. ii번째 산의 높이는 aia_i 미터입니다.

강인한 크라토스가 두려워하는 것은 높이뿐입니다. 그래서 그는 절대 내려가거나 뛰어내리지 않습니다. 큰 높이 차이가 그를 겁나게 하기 때문입니다. 하지만 그는 매우 높이 뛸 수 있고, 신의 기술을 가지고 있습니다. ii번째 산의 높이와 jj번째 산의 높이가 같으면, 크라토스는 한 번의 행동으로 ii부터 jj까지(양 끝 포함) 구간의 모든 산의 높이를 aia_i로 맞출 수 있습니다.

신전에 도달하려면 크라토스가 내려갈 일이 없도록, 즉 ai≤ai+1a_i \le a_{i+1} 조건이 성립하도록 기술을 일부 구간에 써야 합니다. 크라토스는 서두르고 있으며 아레스에게 들키고 싶지 않으므로 산의 높이를 자주 바꿀 수 없습니다. 최소한의 행동 횟수로 크라토스가 신전에 도달하도록 도와주세요.

입력

첫 줄에 신전으로 가는 길에 있는 산의 개수 정수 nn이 주어집니다 (1≤n≤1061 \le n \le 10^6).

둘째 줄에는 산의 높이 aia_i가 정수 nn개로 주어집니다 (1≤ai≤1061 \le a_i \le 10^6).

출력

첫 줄에 크라토스가 신전에 도달하기 위해 필요한 최소 행동 횟수 pp를 출력합니다.

이어서 pp개의 줄에 높이를 맞추는 행동에 사용할 구간의 경계 ll과 rr을 한 줄에 하나씩 출력합니다. 행동은 크라토스가 수행해야 하는 순서대로 출력합니다.

해가 없으면 한 줄에 -1을 출력합니다.

예제2

  1. 예제 1

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

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