Trong một phạm vi (scope) duy nhất, trình biên dịch chèn từng khai báo biến vào bảng ký hiệu theo thứ tự xuất hiện trong mã nguồn. Nếu tên biến đã tồn tại trong bảng (đã được khai báo trước đó trong cùng phạm vi này), đây là lỗi ngữ nghĩa "khai báo trùng" (redeclaration) — bảng ký hiệu không chèn đè mà vẫn giữ nguyên bản ghi đầu tiên.
Cho danh sách n khai báo (tên biến, kiểu dữ liệu — kiểu chỉ mang tính mô tả, không ảnh hưởng tới bài toán) theo thứ tự xuất hiện. Với mỗi lần khai báo trùng, hãy báo cáo cặp (dòng khai báo trùng, dòng khai báo đầu tiên của tên đó) — dòng được đánh số 1-based theo thứ tự trong danh sách khai báo (không tính dòng đầu chứa n).
Ví dụ: với 4 khai báo a, b, a, b (theo thứ tự dòng 1,2,3,4): dòng 3 (a) trùng với dòng 1; dòng 4 (b) trùng với dòng 2.
Dòng đầu tiên chứa số nguyên n (0≤n≤2000).
n dòng tiếp theo, mỗi dòng có dạng name type (type là một chuỗi bất kỳ không chứa khoảng trắng, không cần kiểm tra hợp lệ).
Nếu có k≥1 khai báo trùng, in k dòng theo đúng thứ tự xuất hiện, mỗi dòng dạng name dup_line first_line. Nếu k=0, in một dòng duy nhất NONE thay cho các dòng đó.
Dòng cuối cùng (luôn có) in SO_LUONG_TRUNG k.
Ví dụ với input nêu trên, output là:
a 3 1
b 4 2
SO_LUONG_TRUNG 2
Ví dụ:
Đầu vào:
0
Đầu ra:
NONE
SO_LUONG_TRUNG 0
Đầu vào:
4
a int
b int
a double
b char
Đầu ra:
a 3 1
b 4 2
SO_LUONG_TRUNG 2
Đang tải editor...