[CPP61 - Test 2] Bài 3: Câu lạc bộ đọc sách


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Câu lạc bộ đọc sách

Thư viện trường ghi lại n lượt mượn sách của câu lạc bộ đọc sách. Mỗi lượt gồm tên học sinh và mã sách được mượn. Một học sinh có thể mượn cùng một cuốn sách nhiều lần; mỗi lần vẫn được tính là một lượt mượn khác nhau.

Tên học sinh không có dấu cách, chỉ gồm chữ cái, độ dài không quá 20 và phân biệt chữ hoa, chữ thường. Mã sách không có dấu cách, gồm chữ cái và chữ số, độ dài không quá 10.

Yêu cầu

Viết chương trình C++ hoàn chỉnh, tách rõ từng yêu cầu thành một hàm riêng biệt, thực hiện lần lượt:

  1. Đếm số đầu sách khác nhau đã được mượn ít nhất một lần.
  2. Tìm học sinh có nhiều lượt mượn nhất và số lượt của học sinh đó. Nếu bằng nhau, chọn tên nhỏ nhất theo thứ tự từ điển.
  3. In bảng xếp hạng "Mọt sách" gồm tất cả học sinh theo số đầu sách khác nhau mà mỗi người đã mượn: số đầu sách giảm dần; nếu bằng nhau thì tên tăng dần theo thứ tự từ điển.

Thứ tự từ điển là thứ tự so sánh mặc định của string trong C++: chữ hoa đứng trước chữ thường.

Input

  • Dòng đầu chứa số nguyên n là số lượt mượn.
  • n dòng tiếp theo, mỗi dòng chứa tên học sinh và mã sách, cách nhau bởi dấu cách.

Output

  • Dòng 1: số đầu sách khác nhau đã được mượn.
  • Dòng 2: tên học sinh có nhiều lượt mượn nhất và số lượt, theo định dạng <ten> <so_luot>.
  • Các dòng còn lại: bảng xếp hạng, mỗi học sinh một dòng theo định dạng <ten> <so_dau_sach_khac_nhau>.

Ràng buộc

  • 1 ≤ n ≤ 100000.
  • 1 ≤ độ dài tên học sinh ≤ 20.
  • 1 ≤ độ dài mã sách ≤ 10.

Ví dụ 1

Input

12
An S01
Binh S01
Chi S02
An S01
Chi S04
Binh S03
An S02
Dung S05
Chi S03
An S01
Binh S05
Chi S02

Output

5
An 4
Binh 3
Chi 3
An 2
Dung 1

Giải thích

Có 5 mã sách khác nhau. An và Chi cùng mượn 4 lượt; tên An nhỏ hơn nên chọn An ở dòng 2. Binh và Chi cùng mượn 3 đầu sách khác nhau nên Binh đứng trước Chi, sau đó đến An với 2 đầu sách và Dung với 1 đầu sách.


Comments

There are no comments at the moment.

Zalo