C8-10 · Điểm cao nhất qua các lần thi
Xem dạng PDF
Gửi bài giải
Điểm:
1,00
Giới hạn thời gian:
3.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Tác giả:
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
Python
Đề
Một kỳ thi cho phép thi nhiều lần. Cho kết quả của n lần thi, mỗi lần gồm mã sinh viên và điểm. Với mỗi sinh viên, hãy in điểm cao nhất mà sinh viên đó đạt được qua các lần thi, theo mã tăng dần.
Dữ liệu vào
- Dòng đầu chứa n là số lần thi.
- n dòng tiếp theo, mỗi dòng
ma diemcủa một lần thi. Một mã có thể xuất hiện nhiều lần, không nhất thiết liền nhau.
Kết quả
Mỗi sinh viên một dòng: mã và điểm cao nhất (1 chữ số thập phân, :.1f), cách nhau một dấu cách; các dòng theo mã tăng dần.
Ràng buộc
- ~1 \le n \le 10^5~.
- Mã gồm đúng 8 chữ số, có thể bắt đầu bằng 0 (ví dụ
00123456); mã phải in nguyên văn. - Điểm là số trong đoạn ~[0;\ 10]~, có tối đa một chữ số thập phân, có thể viết dạng số nguyên (
6,10).
Ví dụ
Dữ liệu vào:
3
23010002 6
23010001 7
23010001 3.5
Kết quả:
23010001 7.0
23010002 6.0
Giải thích ví dụ
Sinh viên 23010001 thi hai lần được 7 và 3,5; điểm cao nhất là 7, in 7.0. Sinh viên 23010002 thi một lần được 6, in 6.0. Mã 23010001 nhỏ hơn nên in trước. Chú ý lần thi cuối của 23010001 (3,5) không phải điểm cao nhất: gán thẳng d[ma] = diem mỗi lần là sai.
Lưu ý
- Đổi điểm sang số thực trước khi so: theo thứ tự chuỗi thì
"9" > "10". - Nếu viết
if diem > d.get(ma, 0): d[ma] = diemthì sinh viên chỉ toàn điểm 0 sẽ không bao giờ được ghi vào dict; hãy kiểmma not in dtrước, chọn mặc định nhỏ hơn mọi điểm, hoặc viếtd[ma] = max(d.get(ma, 0), diem)(cách này luôn ghi khóa nên đúng). - Mã là chuỗi: không đổi sang
int(mất chữ số 0 ở đầu).
Nguồn: Bài C8-10, mục 8.9, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long.
Nguồn trong sách: bài tập C8-10 (mục 8.9) · Mức: (**)
Đang tải...