trang chủ / bài tập / planning

Lập lịch khởi hành

Đề bài

Mô tả

n chuyến bay phải khởi hành trong hôm nay. Ban đầu, chuyến bay thứ i được lên lịch khởi hành vào phút thứ i của ngày.

Do sự cố kỹ thuật, không chuyến bay nào có thể khởi hành trong k phút đầu tiên của ngày. Vì vậy cần lập lịch khởi hành mới.

Toàn bộ n chuyến bay giờ phải khởi hành vào các phút khác nhau nằm trong khoảng từ phút thứ k+1 đến phút thứ k+n (bao gồm hai đầu mút). Thứ tự các chuyến bay trong lịch mới có thể khác thứ tự ban đầu, nhưng có một ràng buộc: không chuyến bay nào được khởi hành sớm hơn thời điểm nó được lên lịch ban đầu. Nghĩa là chuyến bay i chỉ có thể khởi hành vào phút i.

Mỗi phút bị hoãn của chuyến bay thứ i tốn ci đơn vị chi phí. Nếu chuyến bay i khởi hành vào phút ti thì chi phí hoãn của nó là ci·(tii).

Hãy tìm cách xếp lịch khởi hành sao cho tổng chi phí là nhỏ nhất.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk.
  • Dòng thứ hai chứa n số nguyên c1,c2,,cn.

Dữ liệu ra

  • Dòng đầu ghi tổng chi phí hoãn nhỏ nhất.
  • Dòng thứ hai ghi n số nguyên phân biệt t1,t2,,tn, trong đó ti là phút chuyến bay thứ i khởi hành. Nếu có nhiều lịch tối ưu, in ra bất kỳ lịch nào.

Ràng buộc

  • 1kn300000
  • 1ci107

Ví dụ

Input Output Giải thích
5 2
4 2 1 10 2
20
3 5 7 4 6
Chuyến 1 tới phút 3, chuyến 2 tới phút 5, chuyến 3 tới phút 7, chuyến 4 tới phút 4, chuyến 5 tới phút 6. Chi phí =(31)·4+(52)·2+(73)·1+(44)·10+(65)·2=20. Đây là một trong nhiều lịch tối ưu; nếu chỉ dời tất cả trễ 2 phút giữ nguyên thứ tự thì chi phí là 38.
1 1
1
1
2
Chỉ có một chuyến, buộc phải khởi hành vào phút 2, hoãn 1 phút, chi phí bằng 1.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0