Hành trình của nhà vua

Đề bài

Mô tả

Lãnh thổ của vương quốc là một bảng hình chữ nhật kích thước n×m. Thủ đô nằm ở ô góc trên bên trái (1,1), ô góc dưới bên phải có toạ độ (n,m).

Nhà vua muốn đi một vòng quanh vương quốc rồi quay về thủ đô: hành trình bắt đầu tại (1,1), kết thúc tại (1,1), và mỗi ô khác thủ đô được thăm đúng một lần, còn thủ đô được thăm đúng hai lần (lúc đầu và lúc cuối). Nhà vua chỉ có thể di chuyển sang ô kề cạnh.

Việc này không phải lúc nào cũng làm được, nên người ta cho phép xây thêm các cổng dịch chuyển một chiều. Mỗi ô được đặt nhiều nhất một cổng, mỗi cổng có một ô đích cố định và có thể dùng bao nhiêu lần tuỳ ý. Khi đứng trên ô có cổng, nhà vua tự chọn dùng hoặc không dùng cổng đó.

Hãy tìm số cổng dịch chuyển ít nhất cần xây để nhà vua hoàn thành hành trình, và chỉ ra một hành trình cụ thể.

Dữ liệu vào

Một dòng duy nhất chứa hai số nguyên nm cách nhau bởi dấu cách.

Dữ liệu ra

Dòng đầu tiên in số nguyên k là số cổng dịch chuyển ít nhất.

k dòng tiếp theo, mỗi dòng bốn số nguyên x1 y1 x2 y2 (1x1,x2n; 1y1,y2m): cổng được đặt tại ô (x1,y1) và dẫn tới ô (x2,y2).

Sau đó in n·m+1 dòng, mỗi dòng hai số là toạ độ các ô theo đúng thứ tự nhà vua đi qua. Hành trình phải bắt đầu và kết thúc tại (1,1).

Nếu có nhiều đáp án, in ra đáp án bất kỳ.

Ràng buộc

  • 1n,m100
  • 2n·m

Ví dụ

Input Output Giải thích
2 2 0
1 1
1 2
2 2
2 1
1 1
Bảng 2×2 có sẵn một chu trình đi qua đủ 4 ô, không cần cổng nào.
3 3 1
3 3 1 1
1 1
1 2
1 3
2 3
2 2
2 1
3 1
3 2
3 3
1 1
Với 9 ô, nhà vua đi rắn bò qua hết bảng và dừng ở (3,3); từ đây ô (1,1) không kề cạnh nên cần một cổng (3,3)(1,1).
1 3 1
1 3 1 1
1 1
1 2
1 3
1 1
Dải ngang: đi tới cuối dải rồi dùng cổng để về, vì đường quay lại sẽ lặp ô (1,2).
1 2 0
1 1
1 2
1 1
Chỉ có hai ô, nhà vua bước sang (1,2) rồi bước ngược về thủ đô, không ô nào bị thăm thừa.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0