Bedao OI Contest 3 - Vụ trộm thế kỷ

Xem dạng PDF

Gửi bài giải


Điểm: 1,20 (OI)
Giới hạn thời gian: 3.0s
Giới hạn bộ nhớ: 256M
Input: laser.inp
Output: laser.out

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Do quá đam mê bộ truyện tranh trinh thám "Thám tử lừng danh Conan", đặc biệt là hâm mộ nhân vật siêu trộm Kaito Kid, ba anh chàng Giang, Tâm và Thắng đã bàn nhau kế hoạch đột nhập vào ngân hàng đề thi quốc tế và cuỗm đi bộ đề thi của kì thi ICPC World Final. Sau một thời gian tìm hiểu, Giang đã phân tích và phát hiện ra rằng cấu trúc của khóa cửa ngân hàng đề thi được thiết kế vô cùng đặc biệt.

Khóa mỗi chiếc cửa là một bảng có kích thước ~R~ hàng, ~C~ cột. Để mở khóa của mỗi cửa, người mở cần chiếu một tia laser vào hàng trên cùng theo hướng từ trái sang phải. Trên bảng người ta thiết kế các tấm gương (~\backslash~ và ~/~ - những tấm gương được đặt ở góc chéo ~45^{\circ}~) để làm thay đổi quỹ đạo của tia laser một góc ~90^{\circ}~. Cửa sẽ được mở ra nếu tia laser đi ra khỏi hàng cuối cùng của bảng theo hướng từ trái sang phải.

image

Để tăng độ bảo mật, nhà sản xuất có thể bỏ bớt một tấm gương trong bảng để chỉ người nắm giữ quyền hạn mới biết cách thêm tấm gương vào đúng vị trí để mở cửa. Để tiến đến được nơi cất giữ đề thi, nhóm trộm cần vượt qua hàng loạt cửa khác nhau. Bằng tài năng dự đoán, Tâm và Thắng đã vẽ ra được sơ đồ của toàn bộ những cánh cửa mà họ cần vượt qua. Điều khó khăn duy nhất hiện tại là tìm cách để mở khóa một số cánh cửa được bảo mật (những cách cửa bị thiếu một tấm gương) hoặc phát hiện những cánh cửa bị sản xuất lỗi và không có cách để mở cửa bằng cách thêm tấm gương.

Mặc dù có rất nhiều tài năng nhưng đối mặt với bài toán hóc búa này ba chàng trai cần sự trợ giúp từ cộng đồng VNOI. Các bạn hãy giúp họ thực hiện việc đó nhé!

Input

Dữ liệu vào từ file văn bản laser.inp:

Gồm nhiều nhóm dữ liệu (có tối đa ~10~ nhóm dữ liệu), trong đó mỗi nhóm dữ liệu mô tả sơ đồ của một cửa mà nhóm cần vượt qua:

  • Dòng đầu tiên gồm ~4~ số nguyên dương ~R~, ~C~, ~M~ và ~N~ (~1 \le R, C \le 1\ 000\ 000~ và ~0 \le M, N \le 200\ 000~) - lần lượt là số dòng, số cột của bảng và số vị trí đặt tấm gương '~/~' và '~\backslash~'.

  • ~M~ dòng tiếp theo, mỗi dòng chứa ~2~ số nguyên dương ~x_i~,~y_i~ (~1 \le x_i \le R~, ~1 \le y_i \le C~) - là tọa độ của các tấm gương ~/~.

  • ~N~ dòng tiếp theo, mỗi dòng chứa ~2~ số nguyên dương ~x_i~,~y_i~ (~1 \le x_i \le R~, ~1 \le y_i \le C~) - là tọa độ của các tấm gương ~\backslash~.

  • Dữ liệu đảm bảo tọa độ của ~M + N~ tấm gương là đôi một phân biệt.

Output

Kết quả in ra file văn bản laser.out:

Với mỗi nhóm dữ liệu, in ra đáp án trên một dòng:

  • In ra ~0~ nếu chiếc cửa đó có thể mở mà không cần thêm bất cứ tấm gương nào.

  • In ra ~k~ ~r~ ~c~ nếu cần thêm một tấm gương để mở được cánh cửa, trong đó có chính xách ~k~ vị trí có thể thêm tấm gương vào để mở cửa và ~(r, c)~ là vị trí có thứ tự từ điển nhỏ nhất. Nếu ở một tọa độ ~(x,y)~ mà tồn tại ~2~ cách thêm tấm gương khác nhau thì chỉ tính ~1~ lần.

  • In ra ~impossible~ nếu không tồn tại cách nào thêm tấm gương để mở được cửa.

Một điểm ~(x_1, y_1)~ được coi là có thứ tự từ điển nhỏ hơn điểm ~(x_2, y_2)~ nếu ~x_1 < x_2~ hoặc ~x_1 = x_2~ và ~y_1 < y_2~.

Scoring

Subtask Điểm Giới hạn
1 ~10~ ~R = 1~ hoặc ~C = 1~ hoặc ~N = 0~
2 ~40~ ~M, N \le 2000~
3 ~50~ Không có ràng buộc gì thêm.

Sample Input 1

5 5 1 4
2 3
1 2
2 5
4 2
5 5
10 10 0 2
1 8
10 8
1000000 1000000 0 0

Sample Output 1

2 4 3
0
impossible

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.