[Buổi 28][Kế thừa][HW] Bài 5: Học bổng qua kế thừa nhiều tầng


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

Học bổng qua kế thừa nhiều tầng

Bối cảnh

Xây chuỗi kế thừa Person -> Student -> ScholarshipStudent. Person giữ id; Student bổ sung GPA; ScholarshipStudent bổ sung researchPoints và communityPoints. Điểm xét học bổng score = GPA*20 + research*2 + community. Chỉ giữ ứng viên score≥S; xếp score giảm, rồi GPA giảm, rồi ID tăng.

Bài Medium yêu cầu hiểu multilevel inheritance: lớp cuối phải tái sử dụng identity từ Person và GPA từ Student, không khai báo lại các field đó.

Ở B28, mục tiêu không phải làm hierarchy càng sâu càng tốt mà là reuse đúng quan hệ is-a. State thuộc lớp cha chỉ nên tồn tại một lần và lớp con dùng lại thông qua constructor/accessor phù hợp. Khi một metric được tạo từ cả field kế thừa và field riêng, hãy xác định rõ lớp nào chịu trách nhiệm tính metric đó để tránh duplicate logic giữa base và derived.

Yêu cầu

  1. Ba tầng inheritance.
  2. Method scholarshipScore() ở lớp cuối.
  3. Filter score≥S.
  4. Sort score giảm → GPA giảm → id tăng.
  5. In score 2 decimals.

Input

Dòng 1 n S; n dòng id gpa research community.

Output

Danh sách hoặc NONE.

Ràng buộc

1≤n≤5000, GPA 0..4.

Ví dụ 1

Input

4 80
S1 3.5 4 5
S2 4 0 0
S3 3 10 0
S0 3.5 4 5

Output

S0 83.00 3.50
S1 83.00 3.50
S2 80.00 4.00
S3 80.00 3.00

Giải thích

S1 và S0 score83, GPA3.5; tie cuối ID S0<S1 nên S0 trước. S2 score80, S3 score80; khi score hòa, GPA S2=4 cao hơn S3=3 nên S2 trước S3. Tất cả đạt ngưỡng80.

Ví dụ này cũng kiểm tra đúng luồng kế thừa: phần state của lớp cha được khởi tạo và tái sử dụng, phần riêng của lớp con chỉ bổ sung behavior/dữ liệu cần thiết. Kết quả cuối vì thế phải phản ánh đồng thời dữ liệu inherited và dữ liệu derived, không có field nào bị khai báo lại hoặc bỏ quên.

Ví dụ 2

Input

2 100
A 4 1 1
B 3 5 5

Output

NONE

Giải thích

A score83, B score75. Ngưỡng100 nên không ai đạt, output NONE.

Ví dụ này cũng kiểm tra đúng luồng kế thừa: phần state của lớp cha được khởi tạo và tái sử dụng, phần riêng của lớp con chỉ bổ sung behavior/dữ liệu cần thiết. Kết quả cuối vì thế phải phản ánh đồng thời dữ liệu inherited và dữ liệu derived, không có field nào bị khai báo lại hoặc bỏ quên.

Thông tin học tập

  • Module: M08
  • Buổi: B28
  • Loại bài: HOMEWORK
  • Độ khó: Medium
  • Concepts: multilevel inheritance, constructor chain, derived score, ranking
  • Giới hạn kiến thức: B01-B28
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo