Mê hoặc bởi trận đấu
Đề bài
Mô tả
Alice và Borys đang chơi một trận tennis gồm game. Trong mỗi game, một người giao bóng (server) và người còn lại đỡ bóng (receiver). Hai người giao bóng luân phiên: sau game Alice giao bóng là game Borys giao bóng, và ngược lại.
Mỗi game kết thúc với chiến thắng của một trong hai người. Nếu người giao bóng thắng game đó, ta nói người đó giữ giao bóng. Nếu người đỡ bóng thắng game đó, ta nói người đó bẻ giao bóng (break).
Biết rằng kết thúc trận đấu, Alice thắng game và Borys thắng game. Ta không biết ai là người giao bóng game đầu tiên, cũng không biết ai thắng từng game cụ thể.
Hãy tìm tất cả các giá trị sao cho có thể đã xảy ra đúng break trong cả trận đấu.
Dữ liệu vào
Dòng đầu chứa số nguyên () — số test trong file.
Mỗi dòng trong dòng tiếp theo chứa hai số nguyên và (; ) — số game Alice và Borys thắng.
Dữ liệu ra
Với mỗi test in ra hai dòng.
- Dòng đầu: số nguyên () — số giá trị thỏa mãn.
- Dòng thứ hai: số nguyên phân biệt () theo thứ tự tăng dần.
Ràng buộc
- và
- Tổng trên tất cả các test trong một file không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 2 1 1 1 0 5 |
4 0 1 2 3 2 0 2 2 2 3 |
Test 1: trận có 3 game, mọi giá trị từ 0 đến 3 break đều có thể. Test 2: trận có 2 game — hoặc cả hai đều giữ giao (0 break), hoặc cả hai cùng bị bẻ (2 break). Test 3: Alice thắng 0 game nên Borys luôn thắng; trong 5 game Borys phải giao 2 hoặc 3 game, mỗi game Borys đỡ là một break, cho 2 hoặc 3 break. |
| 2 99999 0 0 99999 |
2 49999 50000 2 49999 50000 |
Với một người thắng toàn bộ 99999 game, số break luôn bằng số game người còn lại giao — là 49999 hoặc 50000 tùy ai giao trước. |
Bình luận