Đánh số lại các tệp test
Đề bài
Mô tả
Có tệp chứa test, tên của chúng đang được đặt tuỳ tiện. Mỗi tệp thuộc một trong hai loại: tệp ví dụ (loại ) hoặc tệp test thường (loại ).
Bạn muốn đổi tên các tệp sao cho tên của chúng là các số nguyên phân biệt từ đến không bị hụt số nào, đồng thời thoả mãn:
- Tất cả các tệp ví dụ nằm ở đầu, mang tên , với là tổng số tệp ví dụ.
- Tất cả các tệp thường mang tên .
Thao tác duy nhất được phép là lệnh move: lệnh move a b đổi tên tệp thành . Nếu tại thời điểm thực hiện đã tồn tại một tệp tên thì nội dung của nó bị ghi đè (mất đi). Sau lệnh move a b, tệp không còn tồn tại, còn tệp mang nội dung mà tệp có trước đó.
Hãy đưa ra một dãy lệnh move với số lệnh ít nhất để đạt được trạng thái mong muốn.
Dữ liệu vào
- Dòng đầu chứa số nguyên , số lượng tệp test.
- dòng tiếp theo, mỗi dòng gồm và : là tên tệp hiện tại, bằng nếu tệp là ví dụ và nếu là test thường.
Tên tệp gồm các chữ số và chữ cái tiếng Anh in thường, độ dài từ đến ký tự, và các tên là phân biệt.
Dữ liệu ra
- Dòng đầu in số nguyên , số lệnh ít nhất.
- dòng tiếp theo, mỗi dòng có dạng
move a b, trong đó là tên một tệp đang tồn tại ở thời điểm thực hiện lệnh, còn là một xâu gồm chữ số và chữ cái in thường độ dài từ đến ký tự.
Nếu có nhiều dãy lệnh cùng đạt số lệnh ít nhất, in ra một dãy bất kỳ.
Ràng buộc
- Mỗi tên tệp có độ dài từ đến , gồm chữ số và chữ cái in thường, và tất cả các tên phân biệt.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 01 0 2 1 2extra 0 3 1 99 0 |
4 move 3 1 move 01 3 move 2extra 4 move 99 5 |
Có tệp ví dụ (tên 2 và 3). Tệp 2 đã đúng chỗ nên giữ nguyên; ba tệp còn lại và tệp 3 cần chuyển. Kết quả: tên 1,2 là ví dụ, tên 3,4,5 là test thường. Mọi dãy 4 lệnh hợp lệ đều được chấp nhận. |
| 2 1 0 2 1 |
3 move 1 100001 move 2 1 move 100001 2 |
Hai tên 1,2 đang bị hoán đổi loại. Vì cả hai tên đích đều đang bị chiếm nên phải mượn một tên tạm (ví dụ 100001) để phá vòng, tốn lệnh. |
| 5 1 0 11 1 111 0 1111 1 11111 0 |
5 move 11 2 move 1 3 move 1111 1 move 111 4 move 11111 5 |
Chỉ có tên 1 là số hợp lệ trong nhưng sai loại; các tên còn lại đều không phải số trong . Cả tệp đều phải chuyển. |
Bình luận