Đổi bài

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 800 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

\(n\) lá bài được đánh số từ \(1\) tới \(n\). Cho biết thứ tự ban đầu các lá bài trong bộ bài, bạn cần thực hiện \(q\) thao tác. Mỗi thao tác gồm hai số \(u, v\): hãy đổi vị trí của lá bài mang số \(u\) và lá bài mang số \(v\). Hãy in ra thứ tự các lá bài sau khi hoàn thành \(q\) thao tác.

Ví dụ, vị trí ban đầu các lá bài là \([1, 3, 2, 5, 4]\). Cần thực hiện hai thao tác \((1, 2)\)\((2, 3)\).

  • Sau thao tác \((1, 2)\), hai lá bài \(1\)\(2\) bị tráo đổi vị trí. Vị trí các lá bài là \([2, 3, 1, 5, 4]\).
  • Sau thao tác \((2, 3)\), hai lá bài \(2\)\(3\) bị tráo. Thứ tự cuối cùng là \([3, 2, 1, 5, 4]\).

Input

  • Dòng đầu tiên chứa hai số nguyên \(n, q\) (\(1 \leq n, q \leq 2 \times 10^5\)).
  • Dòng thứ hai chứa \(n\) số nguyên dương \(a[i]\) là thứ tự ban đầu các lá bài. Biết rằng \(1 \leq a[i] \leq n\) và không có hai số nào bằng nhau.
  • \(q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u, v\) (\(1 \leq u, v \leq n, u \neq v\)) biểu thị một thao tác.

Output

  • In ra \(n\) số là thứ tự cuối cùng của các lá bài.

Example

Test 1

Input
5 2
1 3 2 5 4
1 2
2 3
Output
3 2 1 5 4

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): \(n, q \leq 200\).
  • Subtask \(2\) (\(30\%\) số điểm): \(n, q \leq 2000\).
  • Subtask \(3\) (\(40\%\) số điểm): không có điều kiện gì thêm.

Bình luận (2)

Mới nhất
Tải bình luận...

Kỳ thi: