Quản lý học viên và sắp xếp đa tiêu chí
Ban đào tạo AI Empire Academy tổ chức kỳ thi tuyển chọn thành viên đội tuyển thi đấu lập trình quốc tế. Có N thí sinh tham gia (1 ≤ N ≤ 104). Mỗi thí sinh có các thông tin:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: struct, std vector, std sort, custom comparator.
Nội dung đề bài
Mục tiêu kiến thức
- Khai báo và sử dụng cấu trúc dữ liệu tự định nghĩa (
struct) trong C++. - Viết hàm so sánh tùy biến (Custom Comparator) hoặc nạp chồng toán tử
operator<cho thuật toánstd::sort. - Xử lý sắp xếp đa tiêu chí (Multi-criteria Sorting) theo thứ tự ưu tiên chặt chẽ.
- So sánh số thực an toàn tránh sai số dấu phẩy động (
epsilon = 1e-7). - Định dạng xuất dữ liệu bảng chuyên nghiệp bằng
<iomanip>.
Mô tả bài toán
Ban đào tạo AI Empire Academy tổ chức kỳ thi tuyển chọn thành viên đội tuyển thi đấu lập trình quốc tế. Có N thí sinh tham gia (1 ≤ N ≤ 104). Mỗi thí sinh có các thông tin:
- Mã học viên (
id): Chuỗi ký tự độ dài 6 (ví dụ:AI1001), không chứa khoảng trắng. - Họ tên (
name): Chuỗi ký tự tiếng Việt không dấu hoặc tiếng Anh (có thể chứa khoảng trắng, từ 1 đến 50 ký tự). - Điểm Coding (
coding): Số nguyên từ 0 đến 1000. - Điểm GPA (
gpa): Số thực từ 0.00 đến 4.00.
Quy tắc xếp hạng ưu tiên:
- Thí sinh có điểm
codingcao hơn được xếp trước. - Nếu điểm
codingbằng nhau, thí sinh cógpacao hơn được xếp trước (so sánh số thực với sai số ε = 10-7). - Nếu cả
codingvàgpabằng nhau, thí sinh có mãidnhỏ hơn theo thứ tự từ điển được xếp trước.
Yêu cầu đầu ra:
- In danh sách thí sinh sau khi đã sắp xếp, mỗi thí sinh trên 1 dòng gồm:
Rank ID Name Coding GPA Rank: Thứ hạng từ 1 đến N.ID: Mã học viên.Name: Họ tên học viên.Coding: Điểm coding.GPA: Điểm GPA in chính xác 2 chữ số thập phân.- Các trường cách nhau bởi đúng 1 dấu cách.
- Dòng cuối cùng in thông tin vinh danh Thủ khoa (Rank 1):
Thu khoa: <Name> (ID: <ID>) - Diem coding: <Coding>
Quy ước nộp bài
- Chỉ cần viết một chương trình đọc
stdinvà in rastdout. Bài này không yêu cầu viết hàm. - Không dùng
coutđể in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vàostdoutvà làm bài sai. - Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
- Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.
Input
- Dòng 1: Một số nguyên dương N (1 ≤ N ≤ 104).
- Tiếp theo là N cụm thông tin của N học viên. Mỗi cụm gồm đúng 3 dòng:
- Dòng 1: Mã học viên
id. - Dòng 2: Họ tên
name. - Dòng 3: Gồm 2 số: số nguyên
codingvà số thựcgpa.
Output
- N dòng đầu tiên: Danh sách học viên xếp hạng theo mẫu:
<Rank> <ID> <Name> <Coding> <GPA>. - Dòng cuối cùng: Thông tin Thủ khoa:
Thu khoa: <Name> (ID: <ID>) - Diem coding: <Coding>.
Ràng buộc
- 1 ≤ N ≤ 104.
- Mã
idluôn duy nhất. - Thời gian chạy: 1500ms.
- Bộ nhớ tối đa: 256MB.
Ví dụ 1
Input
3
AI1001
Nguyen Van An
850 3.75
AI1002
Tran Thi Binh
920 3.60
AI1003
Le Hoang Cuong
850 3.90Output
1 AI1002 Tran Thi Binh 920 3.60
2 AI1003 Le Hoang Cuong 850 3.90
3 AI1001 Nguyen Van An 850 3.75
Thu khoa: Tran Thi Binh (ID: AI1002) - Diem coding: 920Giải thích
AI1002có điểm Coding cao nhất (920) nên xếp Rank 1.AI1001vàAI1003cùng có điểm Coding là 850, xét tiếp GPA:AI1003có GPA 3.90 cao hơnAI1001(3.75) nên xếp trên.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
