Bài 32.1. Quản lý Đội hình tuần tra - [Độ khó: Khá]
Bài 32.1. Quản lý Đội hình tuần tra - [Độ khó: Khá]
Trong một hệ thống an ninh hiện đại, các robot tuần tra được lập trình để di chuyển theo một lộ trình cố định và lặp lại liên tục. Mỗi robot trong đội hình có một mã ID duy nhất. Để tối ưu hóa hiệu quả, đôi khi cần thêm một robot mới vào đội hình sau một robot cụ thể nào đó, hoặc loại bỏ một robot khỏi đội hình nếu nó gặp sự cố. Toàn bộ đội hình tuần tra được tổ chức như một danh sách liên kết tròn để mô phỏng vòng lặp tuần tra không ngừng nghỉ.
Nhiệm vụ của bạn là xây dựng một hệ thống quản lý đội hình tuần tra sử dụng danh sách liên kết tròn. Hệ thống cần hỗ trợ các thao tác: thêm robot, loại bỏ robot, và in ra lộ trình tuần tra hiện tại.
INPUT FORMAT
Dòng đầu tiên là một số nguyên N (1 <= N <= 1000), số lượng thao tác.
Tiếp theo là N dòng, mỗi dòng mô tả một thao tác:
ADD <robot_ID> <after_ID>: Thêm một robot mới córobot_IDvào đội hình sau robot cóafter_ID. Nếuafter_IDlà -1, robot mới được thêm vào đầu (nếu danh sách rỗng hoặc thêm vào sau robot cuối cùng nếu đã có robot).robot_IDvàafter_IDlà các số nguyên dương duy nhất.REMOVE <robot_ID>: Loại bỏ robot córobot_IDkhỏi đội hình.PRINT: In ra lộ trình tuần tra hiện tại. Tất cả cácrobot_IDđều là số nguyên dương và không trùng lặp (1 <=robot_ID<= 10^9). Các thao tácADDđảm bảoafter_IDluôn tồn tại trong danh sách trừ trường hợpafter_IDlà -1. Các thao tácREMOVEđảm bảorobot_IDluôn tồn tại trong danh sách.
OUTPUT FORMAT
Với mỗi thao tác PRINT, in ra các robot_ID theo thứ tự tuần tra, bắt đầu từ robot đầu tiên được thêm vào (hoặc robot được thêm vào đầu tiên nếu không có robot nào được thêm vào sau), cách nhau bởi dấu cách.
Nếu danh sách rỗng, in ra "Empty".
Ví dụ:
Input:
6
ADD 1 -1
ADD 3 1
ADD 2 1
PRINT
REMOVE 3
PRINT
Output:
1 2 3
1 2
Giải thích:
ADD 1 -1: Thêm robot ID 1 vào đội hình. Danh sách:1(và1trỏ về chính nó).ADD 3 1: Thêm robot ID 3 sau robot ID 1. Danh sách:1 -> 3 -> 1(chuỗi tuần tra: 1, 3).ADD 2 1: Thêm robot ID 2 sau robot ID 1. Lưu ý rằng 1 đã được theo sau bởi 3. Khi thêm 2 sau 1, 2 sẽ nằm giữa 1 và 3. Danh sách:1 -> 2 -> 3 -> 1(chuỗi tuần tra: 1, 2, 3).PRINT: In ra chuỗi tuần tra:1 2 3.REMOVE 3: Loại bỏ robot ID 3. Danh sách:1 -> 2 -> 1(chuỗi tuần tra: 1, 2).PRINT: In ra chuỗi tuần tra:1 2.
Comments