마트료시카
시간 제한5초메모리 제한128 MB
인접한 묶음만 합쳐 한 줄로 늘어선 인형을 1부터 m까지 갖춘 세트로 되돌리고 여는 횟수를 최소화합니다.
문제
러시아의 전통 목각 인형인 마트료시카는 안에 점점 작아지는 인형이 겹겹이 들어 있는 인형이다. 마트료시카를 열면 그 안에 더 작은 인형이 들어 있고, 그 인형을 열면 또 그 안에 더 작은 인형이 들어 있으며, 더 이상 안에 인형이 없을 때까지 이 구조가 반복된다.
한 박물관이 겉모습은 비슷하지만 인형 개수는 서로 다른 마트료시카 세트 여러 개를 모아 전시했다. 그런데 아이들이 이 세트들을 모두 분해해 하나의 줄로 늘어놓아 버렸다. 이제 줄에는 인형 개가 한 줄로 놓여 있고(각 인형의 크기는 정수로 나타낸다), 원래 세트가 몇 개였는지, 각 세트에 인형이 몇 개씩 들어 있었는지는 알 수 없다. 확실한 것은, 완전한 마트료시카 세트 하나에 들어 있는 인형들의 크기가 항상 부터 어떤 정수 까지의 연속한 정수라는 사실뿐이다. 물론 은 세트마다 다를 수 있다.
이제 줄에 놓인 인형들을 다시 완전한 세트들로 재조립해야 한다. 재조립할 때는 다음 규칙을 지켜야 한다.
- 작은 인형 안에 그보다 큰 인형을 넣을 수 없다.
- 두 그룹(부분적으로 조립된 인형 묶음)을 합치려면, 두 그룹이 줄에서 서로 인접해 있어야 한다.
- 인형이 어떤 그룹에 한 번 들어가면, 그 그룹을 다른 그룹과 합칠 때를 제외하고는 다른 그룹으로 옮기거나 따로 분리할 수 없다.
작업이 오래 걸릴수록 손해이므로, 인형을 여는 횟수를 최소로 해야 한다. 여기서는 인형을 열고 닫는 데 드는 시간만 고려하므로, 여는 횟수만 최소화하면 된다. 두 그룹을 합칠 때 필요한 최소 여는 횟수의 예를 들면 다음과 같다. 그룹 과 를 합칠 때 필요한 최소 여는 횟수는 이다. 크기 인 인형과 크기 인 인형을 열어야 하기 때문이다. 그룹 와 를 합칠 때 필요한 최소 여는 횟수는 이다.
분해된 마트료시카들을 완전한 세트들로 다시 조립하기 위해 인형을 여는 최소 횟수를 구하여라.
입력
첫째 줄에 줄로 놓인 인형의 개수 이 주어진다 ().
둘째 줄에 각 인형의 크기가 줄에 놓인 순서대로 공백으로 구분되어 주어진다. 각 크기는 이상 이하의 정수이다.
출력
인형들을 완전한 마트료시카 세트들로 다시 조립하기 위해 인형을 여는 최소 횟수를 출력한다. 재조립이 불가능하면(일부 인형을 도난당했을 수도 있다) impossible을 출력한다.