Sereja và Bậc thang
Đề bài
Mô tả
Một dãy số được gọi là dãy bậc thang nếu tồn tại một chỉ số () sao cho:
Nói cách khác, dãy tăng ngặt cho tới phần tử đỉnh rồi giảm ngặt cho tới hết. Phần tăng hoặc phần giảm có thể rỗng (ví dụ các dãy và đều là dãy bậc thang, còn thì không).
Cho tấm thẻ, tấm thứ ghi số . Hãy chọn ra một số tấm thẻ và xếp thành một hàng sao cho dãy số thu được là một dãy bậc thang, đồng thời số thẻ được dùng là nhiều nhất có thể.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số tấm thẻ.
- Dòng thứ hai chứa số nguyên — số ghi trên các tấm thẻ.
Dữ liệu ra
- Dòng đầu in ra số lượng thẻ nhiều nhất có thể xếp thành dãy bậc thang.
- Dòng thứ hai in ra dãy bậc thang tương ứng. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 2 3 4 5 |
5 1 2 3 4 5 |
Có thể dùng cả 5 thẻ. Dãy 1 2 3 4 5 tăng ngặt nên là dãy bậc thang hợp lệ (đỉnh ở cuối). Dãy 5 4 3 2 1 cũng là một đáp án đúng. |
| 6 1 1 2 2 3 3 |
5 1 2 3 2 1 |
Mỗi giá trị chỉ được dùng nhiều nhất hai lần (một lần ở nhánh tăng, một lần ở nhánh giảm), riêng đỉnh dùng một lần. Giá trị lớn nhất 3 làm đỉnh nên chỉ dùng một lần; ta bỏ đi một thẻ 3 thừa. |
Bình luận