Cặp điểm gần nhất
Đề bài
Mô tả
Cho bài toán quen thuộc "tìm cặp điểm gần nhất trên mặt phẳng": cho điểm, tìm cặp điểm có khoảng cách nhỏ nhất, với khoảng cách giữa và là .
Có một đoạn mã sai độ phức tạp nhưng vẫn thường được chấp nhận. Mã đó hoạt động như sau:
đọc n
đọc n điểm vào mảng p[1..n]
sắp xếp p[] tăng dần theo x, nếu bằng x thì tăng dần theo y
d = INF // INF là một số đủ lớn
tot = 0
for i from 1 to n:
for j from (i+1) to n:
++tot
if (p[j].x - p[i].x >= d) then break // break chỉ thoát khỏi vòng lặp j
d = min(d, distance(p[i], p[j]))
xuất d
Giá trị được coi là thời gian chạy của đoạn mã. Vì máy tính chỉ thực hiện được một số phép tính hữu hạn mỗi giây, đoạn mã bị Time Limit Exceeded khi .
Nhiệm vụ của bạn: hãy sinh một bộ dữ liệu (một tập điểm) khiến đoạn mã trên bị TLE, tức là giá trị sau khi chạy lớn hơn . Nếu không tồn tại bộ dữ liệu như vậy, hãy in ra no solution.
Dữ liệu vào
Một dòng duy nhất chứa hai số nguyên và .
Dữ liệu ra
Nếu không tồn tại bộ dữ liệu thỏa mãn, in ra một dòng no solution (không có dấu nháy).
Ngược lại, in ra dòng, dòng thứ chứa hai số nguyên là tọa độ điểm thứ . Bộ dữ liệu phải thỏa mãn:
- Tất cả các điểm đôi một phân biệt.
- .
- Sau khi chạy đoạn mã trên với bộ dữ liệu này, giá trị lớn hơn .
Bài toán có thể có nhiều đáp án đúng, in ra bất kỳ đáp án nào hợp lệ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 3 | 0 0 0 1 0 2 0 3 |
Bốn điểm cùng nằm trên một đường thẳng đứng ( bằng nhau), nên điều kiện không bao giờ xảy ra. Vòng lặp chạy đủ mọi cặp: . |
| 2 100 | no solution | Với , giá trị lớn nhất chỉ là (một cặp duy nhất), không thể vượt . |
| 6 15 | no solution | Giá trị lớn nhất đạt được là , không lớn hơn , nên không tồn tại đáp án. |
Bình luận