Ghép xâu

Xem dạng PDF

Gửi bài giải

Điểm: 0,05 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
CHV
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho một X xâu ký tự độ dài ~n~ chỉ gồm các ký tự là chữ cái thường, chữ cái in hoa và số. Ngoài ra, cho tập hợp m xâu có độ dài bằng nhau và bằng k, trong đó ~(n = m * k)~. Cho biết có thể ghép m xâu này (mỗi xâu dùng đúng một lần) liền nhau để tạo thành một xâu bằng xâu X được không, nếu có hãy in ra thứ tự ghép của các xâu trong tập hợp. Nếu có nhiều cách xếp thứ tự hãy xếp thứ tự sao cho dãy kết quả có thứ tự từ điển nhỏ nhất.

Hai dãy có cùng độ dài A = ~a_1, a_2, a_3, ..., a_m~ và B = ~b_1, b_2, b_3, ..., b_m~, dãy A có thứ tự từ điển nhỏ hơn dãy B nếu tại vị trí i đầu tiên mà ~a_i \ne b_i~ thì ~a_i < b_i~ nói cách khác tồn tại một vị trí i sao cho ~a_i < b_i~ và ~a_j = b_j \forall j < i~ .

Input

Dòng đầu tiên gồm một xâu duy nhất ~X~ ~(0 < |x| \le 5.10^5)~

Dòng thứ hai gồm một số nguyên ~m~, số lượng xâu trong tập hợp ~(1 \le m \le |X|)~

~m~ dòng tiếp theo mỗi dòng là một xâu thuộc tập hợp đã cho, ~m~ xâu này có cùng độ dài k thỏa mãn ~k * m = |X|~

Output

Nếu không có cách ghép xâu in ra "NO", ngược lại in ra ~1~ dòng duy nhất là dãy kết quả gồm ~m~ phần tử là thứ tự của các xâu trong cách ghép thỏa mãn, nếu tồn tại nhiều dãy kết quả in ra dãy kết quả có thứ tự từ điển nhỏ nhất.

Sample Input

conluacon
3
con
con
lua

Sample Output

1 3 2

Giải thích tập hợp xâu S là [con, con, lua] xếp ~S_1~ vào làm xâu thứ nhất, xếp ~S_2~ làm xâu thứ 3 và xếp ~S_3~ làm xâu thứ 2 ta đươc kết quả là conluacon


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.