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 a1,a2,,an. Bạn chỉ biết độ dài n 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 1i,jn), hệ thống trả lời một ký tự:

  • < nếu ai<aj,
  • = nếu ai=aj,
  • > nếu ai>aj.

Khi đã xác định được đáp án, in ra ! i j, trong đó i là chỉ số của một phần tử nhỏ nhất và j 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 n, chương trình của bạn được phép dùng nhiều nhất f(n)=3n22 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 f(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 T: số lượng mảng cần xử lý.
  • Với mỗi mảng: đọc số nguyên n là độ dài mảng. Sau đó lặp lại việc in ? i j và đọ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ặc cout.flush();
  • Python: print(..., flush=True)

Dữ liệu vào

  • Dòng đầu: số nguyên T.
  • Với mỗi mảng, hệ thống gửi một dòng chứa số nguyên 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

  • 1T1000
  • 1n50
  • 1ai109
  • Số truy vấn cho mỗi mảng không vượt quá 3n/22

Ví dụ

Ví dụ 1 (T=2): mảng ẩn thứ nhất là (2,1), mảng ẩn thứ hai là (1,1,1).

Chương trình Hệ thống Giải thích
2 T=2 mảng.
2 Mảng thứ nhất có n=2, được phép 32=1 truy vấn.
? 1 2 > a1>a2.
! 2 1 Nhỏ nhất ở vị trí 2, lớn nhất ở vị trí 1.
3 Mảng thứ hai có n=3, được phép 4.52=3 truy vấn.
? 3 1 = a3=a1.
? 2 1 = a2=a1.
! 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 (T=1): mảng ẩn là (4,7,9).

Chương trình Hệ thống Giải thích
1 T=1 mảng.
3 n=3, được phép 3 truy vấn.
? 1 2 < a1<a2.
? 2 3 < a2<a3.
? 1 3 < a1<a3.
! 1 3 Nhỏ nhất ở vị trí 1, lớn nhất ở vị trí 3.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0