Đoán Mảng
Xem dạng PDFCho một mảng nguyên ~a[1..n]~ thỏa mãn:
- ~a[1]~ là giá trị nhỏ nhất của mảng,
- ~a[n]~ là giá trị lớn nhất của mảng,
- với mọi ~2 \le i \le n~, ta có ~|a[i] - a[i-1]| = 1~.
Bạn được cho thêm một tham số ~k~ và biết chắc rằng tồn tại ít nhất một vị trí ~id~ sao cho ~a[id] = k~. Nhiệm vụ của bạn là tìm ra một vị trí như vậy bằng cách thực hiện tối đa 16 lượt hỏi.
Input
Ban đầu, bạn cần đọc vào hai số nguyên ~n,~ ~k~ ~(1 \le n \le 10000)~ — kích thước mảng và giá trị cần tìm.
Interaction
Để thực hiện truy vấn, in ra một số nguyên id ~(1 \le id \le n)~ và đọc vào một chuỗi — phản hồi của máy chấm. Lưu ý hãy flush luồng ra chuẩn sau mỗi dòng được in ra bằng lệnh fflush(stdout) hoặc std::endl trong ngôn ngữ lập trình C++ hoặc các câu lệnh tương ứng ở các ngôn ngữ lập trình khác.
Máy chấm sẽ phản hồi một trong ba chuỗi:
- BIGGER — tức là ~a[id] < k~.
- SMALLER — tức là ~a[id] > k~.
- HOLA — tức là ~a[id] = k~. Chương trình của bạn phải kết thúc sau khi nhận được phản hồi này.
Nếu bạn hỏi quá 16 lượt mà vẫn chưa nhận được HOLA, chương trình của bạn sẽ nhận được kết quả Wrong Answer.
Sample Input 1
BIGGER
SMALLER
HOLA
Sample Output 1
3
5
4
Notes
Giả sử mảng ẩn là ~[2,3,4,5,6,7]~ và ~k = 5~. Máy chấm in: ~6~ ~5~.
Truy vấn 3: ~a[3] = 4 < 5~, máy chấm trả về BIGGER.
Truy vấn 5: ~a[5] = 6 > 5~, máy chấm trả về SMALLER.
Truy vấn 4: ~a[4] = 5 = k~, máy chấm trả về HOLA. Dừng chương trình.
Bình luận