Gửi bài giải

Điểm: 1200,00 (OI)
Giới hạn thời gian: 0.6s
Giới hạn bộ nhớ: 128M
Input: stdin
Output: stdout

Tác giả:
Dạng bài

Cho hai tập ~A~ và ~B~ đều có ~n~ phần tử phân biệt. Bạn sẽ chọn ra hai subset ~r, q~ sao cho ~r\subset A, q\subset B~ và ~|r|=|q|~. Ta sẽ sử dụng một ánh xạ ~f~ từ tập ~r~ vào tập ~q~ sao cho ~f~ là hàm song ánh. Tức là ~\forall x\in r\Rightarrow \exists y\in q~ sao cho ~f(x)=y~ và ~f(x_1)\neq f(x_2) \forall x_1 \neq x_2~. Ngoài ra bạn cần ánh xạ sao cho ~\forall x_1, x_2\in r, x_1\neq x_2 \Rightarrow [\min(x_1, f(x_1)), \max(x_1, f(x_1)] \cap [\min(x_2, f(x_2), \max(x_2, f(x_2)]\neq \varnothing~.

Bạn có thể đọc kĩ hơn ở đây

Hãy tìm số nguyên dương ~k=|r|=|q|~ lớn nhất sao cho tồn tại cách ánh xạ thỏa mãn, nếu không thì hãy ỉn ra ~0~.

Dữ liệu vào
  • Dòng đầu tiên gồm một số nguyên dương ~n~ (~n\le 10^5~).
  • Dòng tiếp theo chứa ~n~ số nguyên dương ~a_1, a_2, ..., a_n~ (~|a_i| \le 10^{18}, a_i\neq a_j\ \forall i\neq j~) - thể hiện các phần tử của tập ~A~.
  • Dòng tiếp theo chứa ~n~ số nguyên dương ~b_1, b_2, ..., b_n~ (~|b_i| \le 10^{18}, a_i\neq a_j\ \forall i\neq j~) - thể hiện các phần tử của tập ~B~.
Kết quả
  • Dòng đầu tiên in ra một số nguyên dương ~k~.
  • ~k~ dòng tiếp theo, mỗi dòng in ra hai cặp số ~(i, j)~ thể hiện bạn ánh xạ ~f~ từ ~a_i~ vào ~a_j~.
  • Dòng cuối cùng hãy in ra ~-1 -1~.
Chấm điểm

Nếu bạn chỉ in ra số nguyên dương ~k~ thì bạn sẽ nhận được ~36~% số điểm của test.

  • ~10~% số điểm có ~n\le 10~.
  • ~25~% số điểm có ~n\le 100~.
  • ~35~% số điểm có ~n\le 1000~.
  • ~30~% số điểm không có ràng buộc gì thêm.
Ví dụ
Dữ liệu vào
3
-1 1 3
0 2 4
Kết quả
3
1 1
2 2
3 3
-1 -1

~r = \{1, 2, 3\}~, ~q =\{1, 2, 3\}~

~f(a_1) = b_1~

~f(a_2)=b_2~

~f(a_3)=b_3~


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.