판도라의 상자
시간 제한2초메모리 제한1024 MB
산의 높이 배열이 주어질 때, 양 끝 높이가 같은 구간에 연산을 적용해 높이를 비감소로 만드는 최소 연산 횟수와 각 구간을 구하는 문제입니다.
문제
크라토스는 전쟁의 신 아레스를 쓰러뜨리기 위해 판도라의 상자에 도달해야 합니다. 상자는 소유자에게 진정한 신의 힘을 줄 수 있습니다. 안타깝게도 상자는 판도라 신전의 깊숙한 곳에 있고, 신전으로 가는 길에는 개의 산이 있습니다. 번째 산의 높이는 미터입니다.
강인한 크라토스가 두려워하는 것은 높이뿐입니다. 그래서 그는 절대 내려가거나 뛰어내리지 않습니다. 큰 높이 차이가 그를 겁나게 하기 때문입니다. 하지만 그는 매우 높이 뛸 수 있고, 신의 기술을 가지고 있습니다. 번째 산의 높이와 번째 산의 높이가 같으면, 크라토스는 한 번의 행동으로 부터 까지(양 끝 포함) 구간의 모든 산의 높이를 로 맞출 수 있습니다.
신전에 도달하려면 크라토스가 내려갈 일이 없도록, 즉 조건이 성립하도록 기술을 일부 구간에 써야 합니다. 크라토스는 서두르고 있으며 아레스에게 들키고 싶지 않으므로 산의 높이를 자주 바꿀 수 없습니다. 최소한의 행동 횟수로 크라토스가 신전에 도달하도록 도와주세요.
입력
첫 줄에 신전으로 가는 길에 있는 산의 개수 정수 이 주어집니다 ().
둘째 줄에는 산의 높이 가 정수 개로 주어집니다 ().
출력
첫 줄에 크라토스가 신전에 도달하기 위해 필요한 최소 행동 횟수 를 출력합니다.
이어서 개의 줄에 높이를 맞추는 행동에 사용할 구간의 경계 과 을 한 줄에 하나씩 출력합니다. 행동은 크라토스가 수행해야 하는 순서대로 출력합니다.
해가 없으면 한 줄에 -1을 출력합니다.