eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Матрьошка

Матрьошка

Матрьошки - це традиційні русійські дерев'яні ляльки, вкладені одна в одну за зменшенням розміру. Матрьошку можна відкрити і дістати з неї іншу матрьошку, яка у свою чергу може містити в собі ще одну і так далі. \includegraphics{https://static.e-olymp.com/content/2c/2cf65081bbc132634c4722ec8f7ddbb1821b490c.jpg} У російському музеї матрьошок нещодавно демонструвались колекції матрьошек однакового дизайну, які відрізнялись між собою лише кількістю ляльок всередині кожної колекції. На жаль, знайшлись знадто допитливі дітки (що залишились без догляду батьків), які разібрали усі матрьошки і розставили їх в ряд. У ряду розміщено \textbf{n} ляльок, кожна з яких має цілочисельний розмір. Вам необхідно зібрати набори матрьошок, не знаючи ні кількості наборів, ні числа матрьошок у кожному з них. Відомо лише те, що кожен з наборів складається з матрьошок з послідовними розмірами від \textbf{1} до деякого значення \textbf{m}, яке може змінюватись від набору до набору. Під час збірки Вам потрібно дотримуватись наступних правил: \begin{itemize} \item Ви можете покласти матрьошку чи групу матрьошек лише всередину більшої матрьошки. \item Дві групи матрьошек можна об'єднати, лише якщо вони стоять поряд у ряду. \item Коли лялька стає членом групи, її вже неможоиво перенести у іншу групу чи назавжди відокремити від групи. Її можна лише тимчасово відокремити під час злиття двох груп. \end{itemize} Час це гроші, тому збірку потрібно здійснити якомогашвидше. Єдиною операцією, яка вимгає затрат часу у цій задачі, є відкриття та відповідно закриття матрьошки, тому Ви хочете мінімізувати їх кількість. Наприклад, найменшу кількість операцій відкриття (і відповідно операцій закривання) при комбінуванні груп \textbf{\[1, 2, 6\]} та \textbf{\[4\]} дорівнює двом, так як достатньо відкрити лише матрьошки з розмірами \textbf{6} та \textbf{4}. При об'єднанні груп \textbf{\[1, 2, 5\]} та \textbf{\[3, 4\]} достатньо трьох відкривань. Напишіть програму, яка знайде найменшу кількість відкривань, достатніх для збірки усіх множин матрьошок. \InputFile Вхідні дані складаються з одного тесту. Тест складається з двох рядків. Перший рядок містить одне ціле число\textbf{n} (\textbf{1} ≤ \textbf{n} ≤ \textbf{500}) - кількість матрьошок, що стоять окремо у ряду. Другий рядок містить \textbf{n} натуральних чисел - розміри матрьошок у тому ж порядку, у якому вони розміщені у ряду. Розміри матрьошок змінюються від \textbf{1} до \textbf{500} включно. \OutputFile Вивести найменшу кількість операцій відкривання, необхідних для збірки наборів матрьошок. Якщо збірка неможлива (діти були занадто допитливими і забрали з собою деякі матрьошки), то вивести слово \textbf{impossible}.
Ліміт часу 5 секунд
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
7
1 2 3 2 4 1 3
Вихідні дані #1
7
Джерело ACM-ICPC World Finals 2013