Chồng quà tặng
Đề bài
Mô tả
Có một chồng gồm món quà được đánh số phân biệt từ đến . Món quà trên cùng của chồng mang số , món tiếp theo là , …, món dưới đáy là .
Bạn cần gửi đi món quà phân biệt , đúng theo thứ tự xuất hiện trong danh sách.
Để gửi một món quà, ta phải nhấc toàn bộ các món nằm phía trên nó ra khỏi chồng, lấy món quà đó, rồi đặt lại tất cả các món vừa nhấc lên trên đỉnh chồng. Nếu có món nằm phía trên món cần lấy thì thao tác này tốn giây.
Điểm mấu chốt: khi đặt lại các món vừa nhấc lên, ta được sắp xếp lại chúng theo thứ tự tùy ý. Chỉ những món đã được nhấc lên mới có thể đổi chỗ, các món nằm dưới hoàn toàn không bị ảnh hưởng.
Biết trước toàn bộ danh sách , hãy tính tổng thời gian ít nhất để gửi hết món quà.
Dữ liệu vào
- Dòng đầu chứa số nguyên : số lượng bộ dữ liệu.
- Mỗi bộ dữ liệu gồm ba dòng:
- Dòng thứ nhất chứa hai số nguyên và .
- Dòng thứ hai chứa số nguyên : thứ tự các món quà trong chồng, từ trên xuống dưới.
- Dòng thứ ba chứa số nguyên : danh sách các món quà cần gửi, theo đúng thứ tự.
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra trên một dòng tổng thời gian nhỏ nhất (tính bằng giây).
Ràng buộc
- , các đôi một phân biệt
- , các đôi một phân biệt
- Tổng trên tất cả các bộ dữ liệu không vượt quá
- Kết quả có thể vượt quá phạm vi số nguyên 32 bit
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 3 3 3 1 2 3 2 1 7 2 2 1 7 3 4 5 6 3 1 |
5 8 |
Bộ 1: món đang ở trên cùng nên tốn giây. Món nằm ở vị trí , phía trên còn món nên tốn giây; khi trả lại ta đặt món lên đỉnh. Nhờ vậy món chỉ tốn giây. Tổng . Bộ 2: món ở vị trí , phía trên có món nên tốn giây. Ba món vừa được nhấc lên, ta đặt món lên đỉnh nên nó chỉ tốn giây. Tổng . |
| 3 1 1 1 1 4 2 4 3 2 1 1 4 5 3 1 2 3 4 5 5 1 3 |
1 8 11 |
Bộ 1: chỉ có một món và nó ở trên cùng, tốn giây. Bộ 2: món nằm dưới đáy (vị trí ), phía trên có món nên tốn giây; khi trả lại ba món ta đặt món lên đỉnh, nên món chỉ tốn giây. Tổng . Bộ 3: món ở đáy tốn giây; sau đó món và món đều đã nằm trong phần vừa được nhấc lên nên mỗi món chỉ tốn giây. Tổng . |
Bình luận