Một công ty có ba kiểu nhân sự: FullTime, PartTime và Freelancer.
Mỗi nhân sự đều được trả lương — sử dụng interface Payable để biểu diễn khả năng đó.
Payable:
double pay() — số tiền nhận trong tháng.Employee implements Payable:
id (String), name (String)String describe() trả về <id>|<name>FullTime extends Employee:
baseSalary (double) — lương cứng thángbonus (double) — thưởng thángpay() = baseSalary + bonusPartTime extends Employee:
hourlyRate (double), hours (int)pay() = hourlyRate * hourshours > 100 thì 50 giờ vượt được trả 1.5x.Freelancer extends Employee:
projects — danh sách tiền nhận theo từng dự án (double[])pay() = tổng projects * 0.9 (sau khi trừ 10% phí nền tảng)main:
FT <id> <name> <baseSalary> <bonus>PT <id> <name> <hourlyRate> <hours>FL <id> <name> <k> <p1> <p2> ... <pk><id> <name> <pay> (2 chữ số thập phân) theo thứ tự giảm dần theo pay().PAYROLL <tổng> (2 chữ số thập phân).<id> <name> <pay> đã sắp xếp giảm dần theo payPAYROLL <tổng>Ví dụ:
Đầu vào:
3
FT E01 An 10000000 2000000
PT E02 Binh 50000 80
FL E03 Cuong 3 5000000 3000000 2000000
Đầu ra:
E01 An 12000000.00
E03 Cuong 9000000.00
E02 Binh 4000000.00
PAYROLL 25000000.00
Giải thích:
Đầu vào:
2
PT P01 Lan 100000 120
PT P02 Mai 100000 100
Đầu ra:
P01 Lan 13000000.00
P02 Mai 10000000.00
PAYROLL 23000000.00
Giải thích:
Đầu vào:
1
FL F1 Free 0
Đầu ra:
F1 Free 0.00
PAYROLL 0.00
Giải thích:
Đầu vào:
4
FT A x 1000 0
FT B y 1000 0
FT C z 1000 0
FT D w 1000 0
Đầu ra:
A x 1000.00
B y 1000.00
C z 1000.00
D w 1000.00
PAYROLL 4000.00
Giải thích:
Đầu vào:
3
PT a x 1000 50
PT b y 1000 150
PT c z 1000 200
Đầu ra:
c z 225000.00
b y 175000.00
a x 50000.00
PAYROLL 450000.00
Giải thích:
Đầu vào:
5
FT f1 a 5000000 0
PT p1 b 50000 100
FL fl1 c 2 3000000 2000000
FT f2 d 4000000 1000000
PT p2 e 60000 90
Đầu ra:
p2 e 5400000.00
f1 a 5000000.00
p1 b 5000000.00
f2 d 5000000.00
fl1 c 4500000.00
PAYROLL 24900000.00
Giải thích:
Đầu vào:
2
PT a x 1000 400
FL b y 5 1000 1000 1000 1000 1000
Đầu ra:
a x 425000.00
b y 4500.00
PAYROLL 429500.00
Giải thích:
Đang tải editor...