DHBB 2023 - CHY - 10 - Búp bê xếp chồng
Xem dạng PDFTrong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Matryoska là một bộ gồm những búp bê rỗng ruột có kích thước từ lớn đến nhỏ. Búp bê nhỏ nhất được đặt trong búp bê lớn hơn nó một chút; búp bê này lại được đặt trong một búp bê lớn hơn khác, và cứ tiếp tục như vậy cho đến khi búp bê lớn nhất chứa tất cả các búp bê còn lại.
Một bộ gồm ~m~ búp bê được gọi là đầy đủ nếu chứa tất cả các kích thước từ ~1~ đến ~m~.
Có tất cả ~n~ búp bê được đặt thành một hàng liên tiếp. Cần kết hợp chúng thành các bộ búp bê đầy đủ theo các quy tắc sau:
Có thể đặt một bộ gồm các búp bê nhỏ vào bên trong một búp bê lớn hơn;
Chỉ có thể gộp hai bộ khi chúng được đặt kề nhau;
Một búp bê thuộc một bộ không được phép chuyển sang bộ khác. Các búp bê trong một bộ chỉ được tách ra khi gộp bộ đó với một bộ khác.
Khi kết hợp các bộ, cần mở rồi đóng một số búp bê để đặt bộ nhỏ hơn vào bên trong.
Ví dụ, khi kết hợp hai bộ ~[1,2,6]~ và ~[4]~, cần mở các búp bê có kích thước ~6~ và ~4~, đặt búp bê ~2~ đang chứa búp bê ~1~ vào trong búp bê ~4~, sau đó đặt búp bê ~4~ vào trong búp bê ~6~. Như vậy cần mở búp bê ~2~ lần.
Khi kết hợp hai bộ ~[1,3,5]~ và ~[2,4]~, cần mở rồi đóng các búp bê có kích thước ~2,3,4,5~, tổng cộng ~4~ lần.
Yêu cầu: Cho kích thước của ~n~ búp bê theo thứ tự trong hàng, hãy xác định số lần mở rồi đóng búp bê ít nhất để kết hợp chúng thành các bộ đầy đủ. Kích thước của các bộ có thể khác nhau.
Input
Dòng đầu tiên gồm số nguyên dương ~n~ ~(n \le 500)~;
Dòng thứ hai gồm ~n~ số nguyên, là kích thước của các búp bê theo thứ tự trong hàng.
Output
In ra số lần mở rồi đóng búp bê ít nhất cần thực hiện. Nếu không thể kết hợp thành các bộ đầy đủ, in ra impossible.
Scoring
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | ~30\%~ | ~n \le 20~ |
| 2 | ~40\%~ | ~n \le 100~ |
| 3 | ~30\%~ | Không có ràng buộc thêm |
Sample Input 1
7
1 2 1 2 4 3 3
Sample Output 1
impossible
Sample Input 2
7
1 2 3 2 4 1 3
Sample Output 2
7
Bình luận