Chọn ĐTQG Thái Nguyên 2026 - Phân lớp tăng

Xem dạng PDF

Gửi bài giải

Điểm: 25,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong 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

Minh có một dãy gồm ~N~ số nguyên. Minh thực hiện thao tác tách một lớp tăng trên dãy hiện tại như sau:

  • Giữ lại phần tử đầu tiên của dãy.

  • Xét lần lượt các phần tử còn lại từ trái sang phải. Với mỗi phần tử ~x~, nếu ~x~ lớn hơn nghiêm ngặt phần tử được giữ lại gần nhất thì giữ lại ~x~; ngược lại, chuyển ~x~ sang cuối một dãy chờ.

Các phần tử được giữ lại, theo đúng thứ tự ban đầu, tạo thành một lớp tăng. Sau khi in lớp này, Minh tiếp tục thực hiện cùng thao tác trên dãy chờ. Quá trình kết thúc khi dãy chờ rỗng.

Hãy in lần lượt tất cả các lớp tăng thu được.

Input

  • Dòng đầu chứa số nguyên ~N~ ~(1 \le N \le 2 \cdot 10^5)~;

  • Dòng thứ hai chứa ~N~ số nguyên ~a_1, a_2, \dots, a_N~ ~(1 \le a_i \le 10^6)~.

Output

  • Sau mỗi lần tách, in lớp tăng vừa thu được trên một dòng. Các số trên cùng một dòng được in theo thứ tự xuất hiện trong dãy ban đầu.

Scoring

Subtask Điểm Ràng buộc
1 ~25\%~ ~N \le 100~
2 ~25\%~ ~N \le 5000~
3 ~25\%~ ~a_i \le 10~ với mọi ~1 \le i \le N~
4 ~25\%~ Không có giới hạn gì thêm

Sample Input 1

9
6 2 5 5 1 4 7 3 8

Sample Output 1

6 7 8
2 5
5
1 4
3

Notes

Ở lần tách đầu tiên, Minh giữ lại ~6~, sau đó chỉ có ~7~ và ~8~ lớn hơn phần tử được giữ gần nhất, nên thu được lớp ~[6, 7, 8]~. Dãy chờ khi đó là ~[2, 5, 5, 1, 4, 3]~; lần tách tiếp theo tạo lớp ~[2, 5]~. Tiếp tục tương tự, ba lớp còn lại lần lượt là ~[5]~, ~[1, 4]~ và ~[3]~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.