Khi xử lý một tập hợp lớn tệp thu giữ từ thiết bị (chứng cứ số), điều tra viên thường cần loại bỏ trùng lặp (deduplication) để giảm khối lượng phân tích: hai tệp có cùng nội dung sẽ luôn cho cùng một giá trị băm SHA-256, bất kể tên tệp khác nhau.
Cho nội dung của n tệp (đánh số từ 1 đến n theo thứ tự xuất hiện), hãy nhóm các tệp có nội dung giống hệt nhau (dựa trên băm SHA-256 của nội dung, mã hoá UTF-8) và báo cáo: tổng số nhóm nội dung phân biệt, và với mỗi nhóm có từ 2 tệp trở lên, danh sách chỉ số các tệp trong nhóm đó.
Ví dụ: 4 tệp với nội dung report, log, report, log tạo thành 2 nhóm phân biệt: nhóm report gồm tệp 1 và 3, nhóm log gồm tệp 2 và 4.
Dòng 1: số nguyên n (0≤n≤1000) — số tệp. n dòng tiếp theo, mỗi dòng là nội dung của một tệp (một dòng văn bản UTF-8, có thể rỗng, không chứa ký tự xuống dòng).
Dòng đầu tiên: số nguyên là tổng số nhóm nội dung phân biệt. Sau đó, với mỗi nhóm có từ 2 tệp trùng lặp trở lên (bỏ qua nhóm chỉ có đúng 1 tệp), in một dòng liệt kê chỉ số (1-based) các tệp trong nhóm, tăng dần, cách nhau một khoảng trắng. Các dòng nhóm được sắp xếp theo chỉ số nhỏ nhất của từng nhóm, tăng dần. Nếu không có nhóm trùng lặp nào, chỉ in dòng đầu tiên (không có dòng nào tiếp theo).
Ví dụ:
Đầu vào:
4
file_a
file_b
file_c
file_d
Đầu ra:
4
Đầu vào:
4
report
log
report
log
Đầu ra:
2
1 3
2 4
Đang tải editor...