Máy tính của Hải Ly
Đề bài
Mô tả
Có một thiết bị tính toán giải các bài toán lần lượt, từng bài một. Sau khi giải xong một bài và trước khi sang bài tiếp theo, thiết bị phải cấp phát hoặc giải phóng tài nguyên. Thao tác giải phóng tài nguyên rất chậm, vì vậy ta muốn dãy bài toán được sắp xếp sao cho số cặp kề nhau "xấu" là nhỏ nhất, trong đó một cặp với đứng ngay trước được gọi là xấu nếu yêu cầu nhiều tài nguyên hơn .
Có nhà khoa học, nhà khoa học thứ mang bài toán cần tính, đánh số từ đến . Mỗi bài toán cần một lượng tài nguyên (đối với bài của nhà khoa học ). Các bài của cùng một nhà khoa học phải được giải theo đúng thứ tự .
Để giảm kích thước dữ liệu vào, dãy được sinh ra theo công thức: cho trước , , , ; với mọi từ đến :
Hãy sắp xếp tất cả các bài toán của tất cả các nhà khoa học thành một dãy duy nhất sao cho:
- Thứ tự các bài của mỗi nhà khoa học được giữ nguyên (bài của nhà khoa học phải đứng trước bài của cùng nhà khoa học đó).
- Số cặp kề nhau xấu trong dãy là nhỏ nhất có thể.
In ra số cặp xấu nhỏ nhất, và nếu tổng số bài không vượt quá , in thêm thứ tự các bài toán trong cách sắp xếp tối ưu.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số nhà khoa học.
- Mỗi dòng trong dòng tiếp theo chứa năm số nguyên — số bài của nhà khoa học và các tham số sinh dãy.
Dữ liệu ra
- Dòng đầu: số cặp kề nhau xấu nhỏ nhất.
- Nếu tổng , in thêm dòng, mỗi dòng gồm hai số nguyên: lượng tài nguyên của bài và chỉ số nhà khoa học mang bài đó, theo đúng thứ tự sắp xếp tối ưu.
Nếu có nhiều cách sắp xếp tối ưu, in ra cách bất kỳ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 2 1 1 1 10 2 3 1 1 10 |
0 1 1 2 1 3 2 4 2 |
Nhà khoa học 1 có dãy ; nhà khoa học 2 có dãy . Ghép lại theo thứ tự — dãy không giảm, không có cặp xấu. |
| 2 3 10 2 3 1000 3 100 1 999 1000 |
2 10 1 23 1 49 1 100 2 99 2 98 2 |
Dãy của nhà khoa học 1 là (tăng); dãy của nhà khoa học 2 là (giảm). Tối thiểu cặp xấu (giữa – và –). |
Bình luận