Nhỏ nhất và lớn nhất
Đề bài
Mô tả
Đây là bài toán tương tác.
Hệ thống giữ bí mật một mảng . Bạn chỉ biết độ dài của mảng, và cần tìm vị trí của một phần tử nhỏ nhất cùng vị trí của một phần tử lớn nhất.
Cách duy nhất để thu thập thông tin là so sánh hai phần tử qua chỉ số của chúng. Với truy vấn ? i j (với ), hệ thống trả lời một ký tự:
<nếu ,=nếu ,>nếu .
Khi đã xác định được đáp án, in ra ! i j, trong đó là chỉ số của một phần tử nhỏ nhất và là chỉ số của một phần tử lớn nhất. Nếu có nhiều đáp án hợp lệ, in ra đáp án bất kỳ.
Với mảng độ dài , chương trình của bạn được phép dùng nhiều nhất truy vấn so sánh. Lệnh báo đáp án ! i j không được tính vào số này.
Mỗi test gồm nhiều mảng liên tiếp. Bạn phải giải xong mảng hiện tại (in lệnh !) rồi mới được chuyển sang mảng kế tiếp; giới hạn được áp dụng riêng cho từng mảng.
Giao thức tương tác
- Đầu tiên đọc số nguyên : số lượng mảng cần xử lý.
- Với mỗi mảng: đọc số nguyên là độ dài mảng. Sau đó lặp lại việc in
? i jvà đọc một ký tự trả lời, cho tới khi in! i jđể chốt đáp án. - Sau khi chốt đáp án của mảng cuối cùng, chương trình phải kết thúc.
Quan trọng: sau mỗi lần in, phải flush output:
- C++:
cout << endl;hoặccout.flush(); - Python:
print(..., flush=True)
Dữ liệu vào
- Dòng đầu: số nguyên .
- Với mỗi mảng, hệ thống gửi một dòng chứa số nguyên , tiếp theo là các ký tự trả lời cho từng truy vấn của bạn.
Dữ liệu ra
Với mỗi mảng, in các truy vấn ? i j và kết thúc bằng ! i j.
Ràng buộc
- Số truy vấn cho mỗi mảng không vượt quá
Ví dụ
Ví dụ 1 (): mảng ẩn thứ nhất là , mảng ẩn thứ hai là .
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 2 | Có mảng. | |
| 2 | Mảng thứ nhất có , được phép truy vấn. | |
| ? 1 2 | > | . |
| ! 2 1 | Nhỏ nhất ở vị trí , lớn nhất ở vị trí . | |
| 3 | Mảng thứ hai có , được phép truy vấn. | |
| ? 3 1 | = | . |
| ? 2 1 | = | . |
| ! 2 3 | Mọi phần tử bằng nhau nên mọi cặp chỉ số đều là đáp án hợp lệ. |
Ví dụ 2 (): mảng ẩn là .
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 1 | Có mảng. | |
| 3 | , được phép truy vấn. | |
| ? 1 2 | < | . |
| ? 2 3 | < | . |
| ? 1 3 | < | . |
| ! 1 3 | Nhỏ nhất ở vị trí , lớn nhất ở vị trí . |
Bình luận