Công ty lập trình

Xem dạng PDF

Gửi bài giải

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

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Python
Công ty lập trình
Mô 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ệ.

Tải PDF gốc


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.