Sắp Xếp Từng Phần
Nộp bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
2.0s
Python 3
5.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Go, Java, Kotlin, Pascal, Python, Scratch
Có con bò được đánh số từ đến , đứng thành hàng với thứ tự ban đầu (một hoán vị của ).
Khi "gọi" một con bò, nó sẽ di chuyển bằng cách đổi chỗ với các bò kề nhau theo quy tắc sau: trước tiên nó đi sang phải cho đến khi không còn con nào nhỏ hơn nó ở bên phải; sau đó nó đi sang trái cho đến khi không còn con nào lớn hơn nó ở bên trái. Quá trình này lặp lại cho đến khi bò không di chuyển nữa.
Chọn một tập con các con bò và gọi lần lượt các bò trong tập đó theo thứ tự ID tăng dần (lặp lại nhiều lần cho đến khi tất cả bò được sắp xếp). Mục tiêu là toàn bộ hàng bò đạt thứ tự .
Hãy tìm tập con có kích thước nhỏ nhất và trong số các tập con nhỏ nhất, in ra tập con thứ theo thứ tự từ điển nhỏ nhất (sắp xếp theo ID bò tăng dần).
Dữ liệu vào
- Dòng 1: hai số nguyên và (, )
- Dòng 2: số nguyên — hoán vị ban đầu
Dữ liệu ra
- Dòng 1: kích thước tập con tối thiểu
- dòng tiếp theo: ID các bò trong tập, mỗi dòng một ID, theo thứ tự tăng dần
Ràng buộc
- Đảm bảo không vượt quá số tập con tối thiểu thực tế
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 1 4 2 1 3 |
2 1 4 |
Dãy con không được chọn phải là dãy tăng. LIS của có độ dài (ví dụ: ). Tập con tối thiểu có phần tử. Tập từ điển nhỏ nhất là (phần bù của LIS lớn từ điển nhất ). |
Bình luận