trang chủ / bài tập / lowerbnd

Tìm cận dưới trong danh sách liên kết (tương tác)

Đề bài

Mô tả

Đây là bài toán tương tác.

Có một danh sách liên kết đơn được sắp xếp tăng dần, xây dựng trên một mảng gồm n phần tử. Phần tử ở vị trí i chứa hai số nguyên: valuei là giá trị lưu tại phần tử đó, và nexti là chỉ số của phần tử kế tiếp trong danh sách (hoặc 1 nếu đây là phần tử cuối). Danh sách được sắp xếp tăng dần, tức là nếu nexti1 thì valuenexti>valuei.

Bạn được cho số phần tử n, chỉ số của phần tử đầu tiên start, và một số nguyên x. Hãy tìm số nguyên nhỏ nhất trong danh sách mà lớn hơn hoặc bằng x, hoặc kết luận rằng không tồn tại số như vậy.

Bạn được phép thực hiện tối đa 1999 truy vấn dạng ? i (với 1in): hệ thống trả về hai số valueinexti.

Khi tìm được đáp án, in ra ! ans, trong đó ans là số nhỏ nhất trong danh sách lớn hơn hoặc bằng x, hoặc ! -1 nếu không tồn tại. Sau lệnh này chương trình phải kết thúc.

Dữ liệu vào

Ban đầu bạn đọc một dòng gồm ba số nguyên n, start, x — số phần tử của danh sách, chỉ số phần tử đầu tiên và số nguyên x.

Sau mỗi truy vấn ? i, bạn đọc hai số nguyên valueinexti.

Dữ liệu ra

Với mỗi truy vấn, in ra một dòng dạng ? i. Khi kết thúc, in ra ! ans.

Quan trọng: Sau mỗi lần in phải flush output:

  • C++: cout << endl; hoặc cout.flush();
  • Python: print(..., flush=True)

Ràng buộc

  • 1n50000
  • 1startn
  • 0x109
  • 0valuei109
  • Số truy vấn dạng ? không vượt quá 1999.

Ví dụ

Chương trình Hệ thống Giải thích
5 3 80 n=5, start=3, x=80. Danh sách (theo thứ tự): 16,58,79,81,97.
? 3 Hỏi phần tử 3.
16 2 value3=16, next3=2.
? 2 Hỏi phần tử 2.
58 5 value2=58, next2=5.
? 5 value5=79, next5=4.
? 4 value4=8180 — dừng lại.
! 81 Số nhỏ nhất 8081.
Chương trình Hệ thống Giải thích
5 1 6 Danh sách 1,2,3,4,5, x=6.
? 1 Duyệt tới cuối danh sách vẫn không có giá trị 6.
! -1 Không tồn tại số 6.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0