Sắp xếp xâu con
Đề bài
Mô tả
Cho xâu gồm các chữ cái Latin thường. Hãy sắp xếp lại thứ tự các xâu sao cho với mỗi xâu, mọi xâu đứng trước nó đều là xâu con của nó.
Xâu là xâu con của xâu nếu có thể chọn một đoạn các ký tự liên tiếp trong tạo thành . Ví dụ, "for" là xâu con của "codeforces", "for" và "therefore", nhưng không là xâu con của "four", "fofo" và "rof".
Các xâu đã cho có thể trùng nhau.
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên , số lượng xâu.
- dòng tiếp theo, mỗi dòng chứa một xâu.
Dữ liệu ra
- Nếu không thể sắp xếp theo yêu cầu, in ra
NO. - Ngược lại, in ra
YES, sau đó in xâu đã cho theo thứ tự tìm được, mỗi xâu trên một dòng.
Ràng buộc
- Độ dài mỗi xâu từ đến .
- Các xâu chỉ gồm chữ cái Latin thường.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 a aba abacaba ba aba |
YES a ba aba aba abacaba |
Mỗi xâu chứa tất cả các xâu đứng trước nó. |
| 5 a abacaba ba aba abab |
NO | Xâu "abab" không là xâu con của "abacaba", và "abacaba" cũng không là xâu con của "abab", nên không có thứ tự hợp lệ. |
| 3 qwerty qwerty qwerty |
YES qwerty qwerty qwerty |
Một xâu là xâu con của chính nó. |
Bình luận