Robot Cleaner 2

Xem dạng PDF

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

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

Một robot lau dọn được đặt trên sàn của một căn phòng hình chữ nhật, xung quanh được bao bởi các bức tường. Sàn gồm ~n~ hàng và ~m~ cột. Các hàng của sàn được đánh số từ ~1~ đến ~n~ theo thứ tự từ trên xuống dưới, và các cột của sàn được đánh số từ ~1~ đến ~m~ theo thứ tự từ trái sang phải. Ô tại giao điểm của hàng thứ ~r~ và cột thứ ~c~ được ký hiệu là ~(r,c)~. Vị trí ban đầu của robot là ~(r_b, c_b)~.

Trong một giây, robot di chuyển ~dr~ hàng và ~dc~ cột; tức là sau một giây, robot đi từ ô ~(r, c)~ đến ô ~(r + dr, c + dc)~. Ban đầu, ~dr = 1~, ~dc = 1~. Nếu có một bức tường dọc (tường bên trái hoặc bên phải) theo hướng di chuyển, thì ~dc~ sẽ bị phản xạ trước khi di chuyển, nên giá trị mới của ~dc~ là ~-dc~. Tương tự, nếu có một bức tường ngang (tường phía trên hoặc phía dưới) theo hướng di chuyển, thì ~dr~ sẽ bị phản xạ trước khi di chuyển, nên giá trị mới của ~dr~ là ~-dr~.

Mỗi giây (bao gồm cả thời điểm trước khi robot bắt đầu di chuyển), robot sẽ lau sạch mọi ô nằm trên cùng hàng hoặc cùng cột với vị trí hiện tại của nó. Nhiệm vụ của robot là lau sạch toàn bộ sàn; tức là mỗi ô trên sàn cần được lau ít nhất một lần.

image

Minh họa cho ví dụ đầu tiên. Cung màu đỏ là robot. Một ô có màu xanh là ô đã được lau sạch. Mỗi giây, robot lau một hàng và một cột tại vị trí của nó.

Cho kích thước sàn ~n~ và ~m~, cùng vị trí ban đầu của robot ~(r_b, c_b)~, hãy tìm thời gian để robot hoàn thành nhiệm vụ.

Input

Mỗi bộ dữ liệu gồm nhiều test case. Dòng đầu tiên chứa số lượng test case ~t~ (~1 \le t \le 10^4~). Phần mô tả các test case như sau.

Mỗi test case chỉ gồm một dòng, chứa bốn số nguyên ~n~, ~m~, ~r_b~, ~c_b~ (~2 \le n, m \le 100~, ~1 \le r_b \le n~, ~1 \le c_b \le m~) — kích thước của căn phòng và vị trí ban đầu của robot.

Output

Với mỗi test case, in ra một số nguyên — thời gian để robot lau sạch toàn bộ sàn. Có thể chứng minh rằng cuối cùng mọi ô trên sàn đều sẽ được lau ít nhất một lần.

Scoring

Tổng điểm cho bài này là ~500~.

Sample Input 1

5
10 10 6 1
10 10 9 9
9 8 5 6
6 9 2 2
2 2 1 1

Sample Output 1

9
10
9
9
1

Notes

Trong ví dụ đầu tiên, sàn có kích thước ~10\times 10~. Vị trí ban đầu của robot là ~(6, 1)~. Hãy xem hình minh họa của ví dụ này trong đề bài.

Trong ví dụ thứ hai, sàn vẫn như cũ, nhưng vị trí ban đầu của robot bây giờ là ~(9, 9)~.

image

Trong ví dụ thứ ba, sàn có kích thước ~9 \times 8~. Vị trí ban đầu của robot là ~(5, 6)~.

image

Trong ví dụ thứ tư, sàn có kích thước ~6 \times 9~. Vị trí ban đầu của robot là ~(2, 2)~.

image

Trong ví dụ cuối cùng, sàn có kích thước ~2 \times 2~. Vị trí ban đầu của robot là ~(1, 1)~.

image


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.