Nhóm Các Từ Đảo Chữ
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Hai từ được gọi là đảo chữ (anagram) của nhau nếu chúng chứa cùng các ký tự với cùng số lần xuất hiện (không phân biệt thứ tự).
Ví dụ: "listen" và "silent" là đảo chữ của nhau.
Cho danh sách ~N~ từ, hãy nhóm các từ đảo chữ lại với nhau. Mỗi nhóm in trên một dòng, các từ trong nhóm cách nhau bởi dấu cách và được sắp xếp theo thứ tự từ điển. Các nhóm được in theo thứ tự từ đại diện nhỏ nhất (từ nhỏ nhất trong nhóm) tăng dần.
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên ~N~ ~(1 \le N \le 10^5)~.
- Dòng thứ hai chứa ~N~ từ phân biệt, mỗi từ gồm chữ cái thường Latin, độ dài từ ~1~ đến ~20~.
Dữ liệu ra
In ra các nhóm theo định dạng mô tả ở trên.
Ví dụ
Input:
6
eat tea tan ate nat bat
Output:
ate eat tea
bat
nat tan
Giới hạn
~1 \le N \le 10^5~, tổng độ dài các từ ~\le 2 \times 10^6~.
Gợi ý: Dùng map<string, vector<string>>. Khoá là dạng đã sắp xếp của từ (ví dụ "eat" → "aet"). Giá trị là danh sách các từ gốc trong nhóm đó.
Bình luận