Công ty lập trình
Xem dạng PDFMô tả và yêu cầu
Công ty của bạn có n lập trình viên, mỗi người có một trình độ kỹ năng nằm trong
khoảng từ 0 đến 100.
Nhiệm vụ của bạn là chia các lập trình viên này thành các nhóm làm việc sao cho:
Mỗi người thuộc chính xác một nhóm.
Các thành viên trong nhóm làm việc hiệu quả nếu trình độ kỹ năng của họ gần giống
nhau.
Dựa vào kinh nghiệm, bạn biết rằng:
Mức phạt (penalty) của một nhóm = trình độ cao nhất - trình độ thấp nhất trong
nhóm.
Yêu cầu: Xác định có bao nhiêu cách chia n lập trình viên thành các nhóm sao cho tổng
mức phạt của tất cả các nhóm không vượt quá x.
Dữ liệu vào
Dòng đầu tiên gồm hai số nguyên: n và x
o n – số lập trình viên
o x – tổng mức phạt tối đa được phép
Dòng thứ hai gồm n số nguyên t₁, t₂, ..., tₙ:
o tᵢ – trình độ kỹ năng của lập trình viên thứ i
Dữ liệu ra
In ra số cách chia hợp lệ, sao cho tổng mức phạt không vượt quá x
Kết quả in ra lấy modulo 109 + 7
Giới hạn và chấm điểm
1 ≤ 𝑛 ≤ 100
0 ≤ 𝑥 ≤ 5000
0 ≤ 𝑡𝑖 ≤ 100
Ví dụ
INPUT OUTPUT
3 2 3
2 5 3
Giải thích:
Các cách chia nhóm sao cho tổng mức phạt ≤ 2 có thể là:
1. Nhóm {2, 3}, nhóm {5} → phạt = 1
2. Nhóm {3, 5}, nhóm {2} → phạt = 2
3. Nhóm {2}, nhóm {3}, nhóm {5} → phạt = 0
Tổng cộng có 3 cách chia hợp lệ.
Bình luận