Bài 4. Hoán đổi hai số kề nhau (aswap.*) Cho hai số nguyên dương 𝑛, 𝑞 và dãy số nguyên 𝑎1, 𝑎2, … , 𝑎𝑛 (𝑎𝑖 = 𝑖; 𝑖 = 1. . 𝑛) và 𝑞 thao tác được thực hiện theo thứ tự từ 1 đến 𝑞. Với thao tác thứ 𝑖

Bài 4. Hoán đổi hai số kề nhau (aswap.*) Cho hai số nguyên dương 𝑛, 𝑞 và dãy số nguyên 𝑎1, 𝑎2, … , 𝑎𝑛 (𝑎𝑖 = 𝑖; 𝑖 = 1. . 𝑛) và 𝑞 thao tác được thực hiện theo thứ tự từ 1 đến 𝑞. Với thao tác thứ 𝑖 (1 ≤ 𝑖 ≤ 𝑞) bạn được cho một số nguyên 𝑥𝑖 (1 ≤ 𝑥𝑖 ≤ 𝑛) và thực hiện yêu cầu hoán đổi giá trị của số có giá trị 𝑥𝑖 với số đứng liền sau nó trong dãy số. Nếu 𝑥𝑖 đang đứng cuối dãy số thì hoán đổi với số đứng liền trước nó. Dữ liệu vào: + Dòng đầu tiên ghi lần lượt hai số nguyên 𝑛, 𝑞 (1 ≤ 𝑛, 𝑞 ≤ 105 ); + 𝑞 dòng tiếp theo, dòng thứ 𝑖 (1 ≤ 𝑖 ≤ 𝑞) ghi số nguyên 𝑥𝑖 (1 ≤ 𝑥𝑖 ≤ 𝑛) Kết quả: + In ra dãy số 𝑎1, 𝑎2, … , 𝑎𝑛 sau khi thực hiện lần lượt 𝑞 thao tác trong dữ liệu vào Ví dụ: Input Output 5 3 3 5 1 2 1 4 5 3 Giải thích ví dụ: Dãy số ban đầu: 1, 2, 3, 4, 5 + Truy vấn 𝑥1 = 3: hoán đổi 𝑎3 với 𝑎4 → 1, 2, 4, 3, 5 + Truy vấn 𝑥2 = 5: hoán đổi 𝑎5 với 𝑎4 → 1, 2, 4, 5, 3 + Truy vấn 𝑥3 = 1: hoán đổi 𝑎1 với 𝑎2 → 2, 1, 4, 5, 3 Ràng buộc: + Có 70% số test tương ứng 70% số điểm có 𝑛, 𝑞 ≤ 2000; + Có 30% số test còn lại tương ứng 30% số điểm không có ràng buộc gì thêm. c++
Đăng phản hồi