Khôi phục xâu
Đề bài
Mô tả
Một xâu con của một xâu là một dãy các ký tự liên tiếp của xâu đó. Ví dụ "ab", "c", "abc" là các xâu con của "abc", còn "ac" thì không.
Số lần xuất hiện của một xâu con trong một xâu là số vị trí bắt đầu mà xâu con đó xuất hiện. Các lần xuất hiện có thể chồng lấn lên nhau.
Một xâu con của xâu được gọi là xuất hiện nhiều nhất nếu số lần xuất hiện của nó trong không nhỏ hơn số lần xuất hiện của bất kỳ xâu con nào khác của .
Cho một tập gồm xâu đôi một khác nhau. Xâu (không nhất thiết thuộc tập) được gọi là tốt nếu mọi phần tử của tập đều là xâu con xuất hiện nhiều nhất của .
Hãy tìm xâu tốt khác rỗng có độ dài nhỏ nhất. Nếu có nhiều xâu như vậy, hãy in ra xâu nhỏ nhất theo thứ tự từ điển. Nếu không tồn tại xâu tốt nào, in ra NO.
Xâu nhỏ hơn xâu theo thứ tự từ điển nếu là tiền tố của , hoặc tại vị trí đầu tiên mà và khác nhau thì có ký tự nhỏ hơn.
Dữ liệu vào
- Dòng đầu chứa số nguyên là số xâu trong tập.
- dòng tiếp theo, mỗi dòng chứa một xâu khác rỗng gồm các chữ cái Latin thường. Các xâu đôi một khác nhau.
Dữ liệu ra
In ra xâu tốt khác rỗng có độ dài nhỏ nhất; nếu có nhiều xâu thì in xâu nhỏ nhất theo thứ tự từ điển. In ra NO nếu không tồn tại xâu tốt.
Ràng buộc
- Tổng độ dài các xâu không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 ai lru cf |
cfmailru | Trong "cfmailru" mọi ký tự đều xuất hiện đúng 1 lần, nên số lần xuất hiện lớn nhất của một xâu con là 1, và cả 4 xâu đã cho đều xuất hiện đúng 1 lần. Chỉ có hai xâu tốt độ dài nhỏ nhất là "cfmailru" và "mailrucf"; xâu đầu nhỏ hơn theo thứ tự từ điển. |
| 3 kek preceq cheburek |
NO | Xâu "kek" chứa chữ 'k' hai lần, nên trong mọi xâu chứa "kek" thì 'k' xuất hiện ít nhất 2 lần, nhiều hơn số lần xuất hiện của "kek". Do đó "kek" không thể là xâu con xuất hiện nhiều nhất. |
| 2 az zb |
azb | Ghép hai xâu tại ký tự chung 'z'. Ba chữ cái a, z, b mỗi chữ xuất hiện 1 lần, "az" và "zb" cũng xuất hiện 1 lần. |
Bình luận