Gửi bài giải
Điểm:
0,01 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
Cho một dãy gồm ~n~ số nguyên dương ~a_1, a_2, a_3, \ldots, a_n~ là hoán vị của các số nguyên từ ~1~ đến ~n~. Sử dụng các thao tác lần lượt đổi chỗ hai số ở vị trí ~i~ và ~j~ bất kỳ, hãy sắp xếp dãy ban đầu thành dãy tăng dần.
Input
- Dòng đầu tiên chứa số nguyên dương ~n~ (~n \leq 10^5~).
- Dòng tiếp theo chứa ~n~ số nguyên dương ~a_1, a_2, a_3, \ldots, a_n~ là hoán vị của các số nguyên từ ~1~ đến ~n~.
Output
- Dòng đầu tiên in ra số ~k~ (~0 \leq k \leq 2 \times 10^5~) - số lượng thao tác cần dùng.
- ~k~ dòng tiếp theo, mỗi dòng chứa hai số nguyên ~i~, ~j~ cách nhau một khoảng trắng (~1 \leq i, j \leq n~) thể hiện một thao tác đổi ~a_i~ và ~a_j~ cho nhau.
Có thể chứng minh được rằng luôn tồn tại cách sắp xếp thoả mãn không sử dụng quá ~2 \times 10^5~ thao tác.
Subtasks
- Subtask ~1~ (~10\%~): ~n = 3~.
- Subtask ~2~ (~20\%~): ~n \leq 100~.
- Subtask ~3~ (~30\%~): ~n \leq 10^4~.
- Subtask ~4~ (~40\%~): Không có ràng buộc gì thêm.
Sample Test
Input:
4
3 4 1 2
Output:
2
1 3
2 4