Gửi bài giải


Điểm: 100
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Một phân xưởng sản xuất có \(M\) máy giống nhau và cần hoàn thành N công việc độc lập. Công việc thứ i cần thời gian xử lý liên tục là \(t_i\).

Mỗi công việc phải được thực hiện trọn vẹn trên đúng một máy. Mỗi máy tại một thời điểm chỉ có thể thực hiện tối đa một công việc. Một máy có thể bắt đầu công việc mới ngay khi vừa hoàn thành xong công việc trước đó.

Mục tiêu là phân chia \(N\) công việc cho \(M\) máy sao cho thời điểm hoàn thành tất cả các công việc (makespan) là nhỏ nhất có thể.

Định dạng đầu vào

  • Dòng thứ nhất chứa hai số nguyên \(N\) và M (\(1 \le N \le 100, 1 \le M \le 10\)).
  • Dòng thứ hai chứa \(N\) số nguyên dương \(t_1, t_2, \dots, t_N\) (\(1 \le t_i \le 100\)) là thời gian thực hiện từng công việc.

Định dạng đầu ra

  • Gồm \(M\) dòng tương ứng với lịch trình của M máy (từ máy 1 đến máy M). Dòng thứ j in ra số lượng công việc được giao cho máy j, theo sau là chỉ số của các công việc (đánh số từ 1 đến \(N\)) theo thứ tự thực hiện trên máy đó, cách nhau bởi dấu cách.

Ví dụ

Input:

6 3
3 2 5 1 4 6

Output:

2 1 4
2 2 5
2 3 6

Ràng buộc & Subtasks

Subtask Điểm Ràng buộc
1 20 \(1 \le N \le 10, M \le 3\)
2 30 \(1 \le N \le 50, M \le 5\)
3 50 \(1 \le N \le 100, M \le 10\)

Nhận xét

Không có ý kiến tại thời điểm này.