Trong dây chuyền lắp ráp máy tính tựđộng, có M loại linh kiện đánh số 1, 2...,M và mỗi chiếc máy
được lắp ráp lần lượt từ T linh kiện O1, O2, ..., OT theo đúng thứ tự này. (1 ≤ Oi≤ M).
Để tựđộng hoá dây chuyền sản xuất, người ta sử dụng một rô-bốt lắp ráp và N dụng cụ lắp ráp. Biết
được những thông tin sau:
• Tại mỗi thời điểm, Rô-bốt chỉ có thể cầm được 1 dụng cụ.
• Tại thời điểm bắt đầu, Rô-bốt không cầm dụng cụ gì cả và phải chọn một trong số N dụng cụđã cho, thời gian chọn không đáng kể.
• Khi đã có dụng cụ, Rô-bốt sẽ sử dụng nó để lắp một linh kiện trong dãy O, biết thời gian để Rô-
bốt lắp linh kiện loại v bằng dụng cụ thứ i là biv (1 ≤ i ≤ N, 1 ≤ v ≤ M).
• Sau khi lắp xong mỗi linh kiện, Rô-bốt được phép đổi dụng cụ khác để lắp linh kiện tiếp theo, biết thời gian đổi từ dụng cụ i sang dụng cụ j là aij. (Lưu ý rằng aij có thể khác aji và aii luôn bằng 0).
Yêu cầu:
Hãy lập trình cho Rô-bốt có thể lắp ráp các linh kiện O1, O2, ..., OT một cách nhanh nhất.
Dữ liệu: Vào từ file văn bản VITERBI.INP theo khuôn dạng sau:
N M T O1 O2 ... OT O1 O2 ... OT a11 a12 ... a1N a21 a22 ... a2N ... aN1 aN2 ... aNN b11 b12 ... ... b1M b21 b22 ... ... b2M ... bN1 bN2 ... ... bNM
Kết quả: Ghi ra file văn bản VITERBI.OUT theo khuôn dạng sau:
• Dòng 1: Ghi thời gian để lắp ráp xong toàn bộ T linh kiện O1, ..., OT
• Dòng 2: Ghi T số, số thứ k là số hiệu dụng cụđược chọn để lắp linh kiện thứ k trong dãy (Ok).
Các số trên một dòng của Input / Output file ghi cách nhau ít nhất một dấu cách
Ràng buộc: Tất cả các số nói tới ở trên đều là các số tự nhiên ≤ 200. Riêng N, M và T có thêm giả
thiết là số dương. Ví dụ: VITERBI.INP VITERBI.OUT 3 4 8 1 2 3 4 1 2 3 4 21 3 2 1 1 3 2 1 1