

THỜI GIAN SỚM NHẤT
Cho N công việc,công việc thứ i hoàn thành trong thời gian ti.Các công việc thực hiện trên M máy(công suất mỗi máy như nhau,mỗi máy đề thực hiện được mọi công việc trong số N công việc),mỗi công việc được làm liên tục cho đến khi xong
YÊU CẦU:Hãy tổ chức các máy thực hiện đủ N công việc sao cho thời gian hoàn thành tất cả công việc càng sớm càng tốt
Dữ liệu vào:nhập từ bàn phím
-Dòng 1:là hai sô nguyên dương N,M(N,M<=100)
-Dòng tiếp theo là N số t1,t2,....,ti là các số cách nhau bởi một dấu cách.
Kết quả:Ra màn hình
-Dòng đầu là thời gian sớm nhất hoàn thành N công việc
-M dòng tiếp theo,dòng thứ i ghi danh sách các công việc thực hiện trên máy thứ i
VD:
In:
6 3
2 5 8 1 5 1
Out:
8
3
2 1 4
5 6
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
$\textit{Python}$
n, m = map(int, input().split())
t = list(map(int, input().split()))
cong_viec = []
for i in range(n):
cong_viec.append([t[i], i + 1])
for i in range(n - 1):
for j in range(i + 1, n):
if cong_viec[i][0] < cong_viec[j][0]:
cong_viec[i], cong_viec[j] = cong_viec[j], cong_viec[i]
thoi_gian_may = [0] * m
danh_sach_may = [[] for _ in range(m)]
for cv in cong_viec:
thoi_gian = cv[0]
chi_so = cv[1]
vi_tri_may_ranh = 0
for i in range(1, m):
if thoi_gian_may[i] < thoi_gian_may[vi_tri_may_ranh]:
vi_tri_may_ranh = i
thoi_gian_may[vi_tri_may_ranh] += thoi_gian
danh_sach_may[vi_tri_may_ranh].append(chi_so)
thoi_gian_max = thoi_gian_may[0]
for i in range(1, m):
if thoi_gian_may[i] > thoi_gian_max:
thoi_gian_max = thoi_gian_may[i]
print(thoi_gian_max)
for i in range(m):
print(*(danh_sach_may[i]))
#HaolacHãy giúp mọi người biết câu trả lời này thế nào?

n, m = map(int, input().split())
t = list(map(int, input().split()))
l, r = max(t), sum(t)
def ok(x):
a = sorted([(0, i) for i in range(m)])
p = [[] for _ in range(m)]
for i in sorted(range(n), key=lambda k: -t[k]):
a.sort()
s, j = a[0]
if s + t[i] > x:
return None
p[j].append(i + 1)
a[0] = (s + t[i], j)
return p
while l < r:
mid = (l + r) // 2
if ok(mid):
r = mid
else:
l = mid + 1
kq = ok(l)
print(l)
for i in range(m):
if kq[i]:
print(*kq[i])
else:
print()Hãy giúp mọi người biết câu trả lời này thế nào?

Bảng tin
51
2770
35
adu
203
1367
80
? sao v?