cp/others/mkcal
2017-02-12 22:18:09 +07:00
..
ctmt.pas Add /r/dailyprogrammer Challenge #302 [Intermediate] and slightly clean up 2017-02-12 22:18:09 +07:00
llgc2m.pas Add /r/dailyprogrammer Challenge #302 [Intermediate] and slightly clean up 2017-02-12 22:18:09 +07:00
llgcmm.pas Update others/{mHoang,mkcal} 2017-01-01 20:42:05 +07:00
README.md Add others/easy20160714 2017-01-01 21:15:44 +07:00
xepviec.pas Add /r/dailyprogrammer Challenge #302 [Intermediate] and slightly clean up 2017-02-12 22:18:09 +07:00

Bài tập lập lịch

Chương trình máy tính

Giả sử trong một phiên làm việc từ thời điểm 0 đến 8640000, một trung tâm tính toán cần thực hiện n chương trình, chương trình i được thực hiện trong đoạn thời gian [ai, bi].

Yêu cầu

  • Cho đoạn thời gian [p0, q0], kiểm tra xem mọi thời điểm của đoạn luôn có chương trình chạy hay không.
  • Cho đoạn thời gian [r0, s0], kiểm tra xem mọi thời điểm của đoạn luôn không có chương trình chạy hay không.
  • Tìm đoạn thời gian [p, q] dài nhất luôn có chương trình chạy.
  • Tìm đoạn thời gian [r, s] dài nhất không có chương trình chạy.

Dữ liệu vào

  • Dòng đầu ghi số nguyên dương n.
  • n dòng tiếp theo, với i từ 1 đến n, dòng thứ i + 1 ghi hai số tự nhiên ai và bi.
  • Dòng thứ n + 2 ghi hai số tự nhiên p0, q0.
  • Dòng thứ n + 3 ghi hai số tự nhiên r0, s0.

Dữ liệu ra

  • Dòng đầu ghi 1 nếu đoạn thời gian [p0, q0] luôn có chương trình chạy, ghi 0 nếu không phải.
  • Dòng thứ hai ghi 1 nếu đoạn thời gian [r0, s0] không có chương trình nào chạy, ghi 0 nếu có.
  • Dòng thứ ba ghi hai số p và q.
  • Dòng thứ tư ghi hai số r và s.

Giới hạn

  • n ≤ 200
  • 0 ≤ ai ≤ bi < 8640000
  • 0 ≤ p0 ≤ q0 < 8640000
  • 0 ≤ r0 ≤ s0 < 8640000

Ví dụ

CTMT.OUT CTMT.INP
5 1
1000 10000 0
2000 30000 8000000 8500000
20000 100000 500001 7999999
200000 500000
8000000 8500000
1000 100000
0 1000

Xếp việc

Cho n công việc, mỗi công việc phải làm trước một số công việc nào đó khác.

Hãy xếp lịch thực hiện đủ n công việc.

Dữ liệu vào

  • Dòng đầu là số nguyên dương n.
  • Các dòng tiếp, đầu dòng là số thứ tự i của một công việc, tiếp theo là số thứ tự của các công việc phải làm sau i.

Dữ liệu ra

Thứ tự thực hiện của n công việc in trên một dòng.

Giới hạn

  • 2 ≤ n ≤ 200
  • 1 ≤ i ≤ n

Ví dụ

XEPVIEC.INP XEPVIEC.OUT
10 1 2 7 9 4 6 3 5 8 10
1 2 3
2 4 10
3 5
4 6 8
5 8
6 3
7 9 5
9 4 10

Lập lịch gia công trên hai máy

Một sản phẩm gồm n chi tiết, mỗi chi tiết phải gia công lần lượt trên hai máy a và b. Thời gian thực hiện chi tiết i trên máy a là ai, trên máy b là bi.

Hãy xếp lịch hoàn thành sản phẩm với thời gian ngắn nhất.

Dữ liệu vào

  • Dòng đầu là số nguyên dương n.
  • n dòng tiếp theo, dòng thứ i + 1 lần lượt là hai số nguyên dương ai, bi.

Dữ liệu ra

  • Dòng đầu là thời gian ngắn nhất để hoàn thành sản phẩm.
  • Dòng thứ hai ghi thứ tự gia công các chi tiết để hoàn thành trong thời gian ngắn nhất này.

Ví dụ

LLGC2M.INP LLGC2M.OUT
5 26
3 3 1 4 2 5 3
4 3
6 2
5 7
6 3

Lập lịch chia n việc cho m máy

Cho n công việc, công việc i hoàn thành trong thời gian ti. Các công việc được thực hiện trên m máy có công suất như nhau.

Hãy phân chia công việc cho các máy sao cho thời gian hoàn thành ngắn nhất.

Dữ liệu vào

  • Dòng đầu lần lượt ghi hai số nguyên dương n và m.
  • Dòng thứ hai là n số nguyên dương t1, t2, ..., tn.

Dữ liệu ra

  • Dòng đầu là thời gian ngắn nhất để hoàn thành công việc.
  • m dòng tiếp theo, dòng thứ i + 1 ghi số thứ tự các công việc thực hiện trên máy i để hoàn thành công việc trong thời gian ngắn nhất này.

Ví dụ

LLGCMM.INP LLGCMM.OUT
6 3 8
2 5 8 1 5 1 3
2 4 1
5 6