eolymp
bolt
Try our new interface for solving problems
Məsələlər

Матрёшка

Матрёшка

Матрёшки - это традиционные русские деревянные куклы, вложенные друг в друга по уменьшению размера. Матрёшку можно открыть и извлечь из нее другую матрёшку, которая в свою очередь может содержать в себе еще одну и так далее. \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}.
Zaman məhdudiyyəti 5 saniyə
Yaddaşı istafadə məhdudiyyəti 256 MiB
Giriş verilənləri #1
7
1 2 3 2 4 1 3
Çıxış verilənləri #1
7
Mənbə ACM-ICPC World Finals 2013