Tính điểm môn học

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
Ha Minh Ngoc
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Hãy viết chương trình tính điểm bài tập lập trình trên Spoj của môn CTDL&GT, với các yêu cầu sau:

  • Khai báo cấu trúc dữ liệu Student với kiểu dữ liệu phù hợp trong phần Input
  • Đọc dữ liệu danh sách bài tập, danh sách sinh viên, và danh sách những lần nộp bài
  • Sinh viên có thể nộp bài làm nhiều lần cho một bài tập, chương trình lấy điểm cao nhất
  • Không tính điểm bài tập nằm ngoài danh sách đã cho
  • Xuất ra danh sách sinh viên theo mô tả phần Output.

Input

Dòng đầu tiên là ba số nguyên ~n~, ~p~, ~m~ lần lượt là số lượng sinh viên, số bài tập và tổng số lần nộp bài của tất cả sinh viên (~n~ ≤ ~10^{5}~, ~p~ ≤ ~100~,~m~ ≤ ~2*10^{5}~).

Dòng thứ 2 chứa ~n~ số nguyên ~ri~ là các mã số sinh viên (~r_i~ ≤ ~10^{9}~ , ~0~ ≤ ~i~ < ~n~)

Dòng thứ 3 là ~p~ số nguyên ~P_i~ là các mã số bài tập (~P_i~ ≤ ~10^{7}~ , ~0~ ≤ ~i~ < ~p~)

~m~ dòng tiếp theo, mỗi dòng gồm 3 số ~ni~, ~p_i~, ~s_i~ lần lượt là mã số sinh viên, mã bài tập, số điểm, thể hiện kết quả của một lần nộp bài của một sinh viên (~si~ ≤ 100).

Output

Gồm ~n~ dòng, mỗi dòng gồm mã số sinh viên, điểm trung bình, và số lần nộp bài hợp lệ cách nhau bởi 1 khoảng trắng. Kết quả sắp xếp theo điểm trung bình từ cao xuống thấp, số lần nộp bài từ thấp đến cao, và mã số sinh viên từ thấp lên cao. Điểm trung bình được làm tròn xuống tới hàng đơn vị.

Sample Input:

2 2 3
1 2
11 12
1 11 80
1 12 90
2 12 100

Sample Output:

1 85 2
2 50 1

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.