Bài 20.3. Xếp Hạng Game Thủ - [Độ khó: Khá]


LÀM BÀI

Points: 10 (partial)
Time limit: 2.0s
Memory limit: 64M

Author:
Problem type

Bài 20.3. Xếp Hạng Game Thủ - [Độ khó: Khá]

Trong một giải đấu game online, ban tổ chức cần liên tục cập nhật và hiển thị bảng xếp hạng của các game thủ. Mỗi khi một game thủ hoàn thành một trận đấu, điểm số của họ sẽ được cộng thêm vào tổng điểm hiện tại. Bạn cần viết chương trình quản lý điểm số này. Chương trình sẽ nhận một loạt các thao tác: thêm điểm cho một game thủ, và hiển thị danh sách tất cả các game thủ cùng điểm số của họ theo thứ tự điểm số giảm dần (từ cao xuống thấp). Nếu hai game thủ có cùng điểm, họ sẽ được sắp xếp theo tên (alphabetical order) tăng dần.

Mô tả: Bài tập này yêu cầu sử dụng std::map để lưu trữ điểm số của game thủ. Tuy nhiên, việc xuất kết quả theo thứ tự điểm số (chứ không phải tên) sẽ đòi hỏi một bước xử lý phụ sau khi cập nhật map, thường là sao chép dữ liệu sang một std::vector và sử dụng std::sort với một hàm so sánh tùy chỉnh.

INPUT FORMAT

Dòng đầu tiên chứa số nguyên Q (1 <= Q <= 1000), là tổng số truy vấn. Q dòng tiếp theo, mỗi dòng là một truy vấn theo định dạng sau:

  • UPDATE [Tên game thủ] [Điểm]: Cộng thêm Điểm vào tổng điểm hiện tại của Tên game thủ. Nếu Tên game thủ chưa có, tạo mới và gán điểm. Điểm là số nguyên dương.
  • RANK: In ra bảng xếp hạng.
OUTPUT FORMAT

Kết quả của mỗi truy vấn RANK sẽ được in ra theo yêu cầu.

  • UPDATE không cần in ra gì.
  • RANK: In ra mỗi game thủ cùng điểm số của họ trên một dòng theo định dạng [Tên game thủ]: [Điểm số]. Các game thủ phải được sắp xếp theo điểm số giảm dần. Nếu điểm số bằng nhau, sắp xếp theo tên (alphabetical order) tăng dần.
Ví dụ:

Input:

7
UPDATE Alice 100
UPDATE Bob 150
RANK
UPDATE Alice 50
UPDATE Charlie 150
RANK
UPDATE Bob 20
RANK

Output:

Bob: 150
Alice: 100
Bob: 150
Charlie: 150
Alice: 150
Bob: 170
Charlie: 150
Alice: 150

Giải thích:

  • Ban đầu: Alice 100, Bob 150. Rank: Bob, Alice.
  • Thêm Alice 50 -> Alice 150. Thêm Charlie 150.
  • Lúc này, Alice, Bob, Charlie đều 150 điểm. Sắp xếp theo tên: Alice, Bob, Charlie.
  • Thêm Bob 20 -> Bob 170. Rank: Bob (170), Charlie (150), Alice (150). (Charlie trước Alice vì tên Charlie đứng trước Alice theo bảng chữ cái).


Comments

There are no comments at the moment.

Zalo