Bunch
Cho N ly nhựa, đánh số từ 1 đến N và xếp thành một dãy trên bàn thành một dãy theo thứ tự tăng dần từ trái sang phải tạo thành N chồng ly, mỗi chồng có một ly. Dãy các chồng ly này được gom lại nhờ các phép di chuyển cho dưới dạng a b: xếp chồng ly chứa ly a lên trên chồng có ly b (nếu các ly a và b ở cùng một chồng hoặc a = b thì trạng thái các chồng ly không thay đổi). Ví dụ, với N = 7 và 5 phép di chuyển 13, 26, 16, 47, 42, dãy các chồng ly sẽ thay đổi như sau:
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
1 2 3 4 5 6 7
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * 1 * * * *
* 2 3 4 5 6 7
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * 1 * * 2 *
* * 3 4 5 6 7
* * * * * * *
* * * * * * *
* * * * * 1 *
* * * * * 3 *
* * * * * 2 *
* * * 4 5 6 7
* * * * * * *
* * * * * * *
* * * * * 1 *
* * * * * 3 *
* * * * * 2 4
* * * * 5 6 7
* * * * * 4 *
* * * * * 7 *
* * * * * 1 *
* * * * * 3 *
* * * * * 2 *
* * * * 5 6 *
Yêu cầu: Cho trước M phép di chuyển. Hãy xác định số ly có trong chồng có nhiều ly nhất sau khi thực hiện một phép di chuyển nào đó rồi thực hiện tiếp M phép di chuyển này (thực hiện cả thảy M+1 phép di chuyển).
Dữ liệu: Vào từ file văn bản BUNCH.INP:
• Dòng đầu tiên chứa lần lượt hai số nguyên N, M (2 ≤ N ≤ 100 000, 1 ≤ M ≤ 100 000)
• M dòng sau: mỗi dòng chứa hai số nguyên a, b xác định một phép di chuyển.
Kết quả: Đưa ra file văn bản BUNCH.OUT trên một dòng số nguyên, là số ly tìm được.
Ví dụ:
BUNCH.INP
6 4
5 2
3 3
1 3
6 2
BUNCH.OUT
5
Giải thích
-Đầu tiên ta thực hiện phép di chuyển 61 (hoặc 16)
-Tiếp theo ta thực hiện 4 phép di chuyển như mô tả trong file BUNCH.INP thì được chồng ly có số đĩa nhiều nhất là 5.
-Không còn cách nào khác để có chồng ly với 6 đĩa trở lên.
Bookmarks