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""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

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.