trang chủ / đề bài / electrif

Điện khí hóa

Đề bài

Mô tả

Cho n điểm a1,a2,…,an nằm trên trục số. Với một số nguyên k cho trước, hãy tìm một điểm nguyên x trên trục số sao cho giá trị hàm fk(x) là nhỏ nhất có thể.

Hàm fk(x) được định nghĩa như sau:

  • Lập danh sách khoảng cách d1,d2,…,dn với di=|ai−x|;
  • Sắp xếp danh sách d theo thứ tự không giảm;
  • Lấy phần tử dk+1 (phần tử nhỏ thứ k+1) làm kết quả.

Nói cách khác, fk(x) là khoảng cách nhỏ thứ k+1 từ x đến các điểm đã cho.

Nếu có nhiều điểm x cho giá trị nhỏ nhất, bạn có thể in ra bất kỳ điểm nào trong số đó.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên T — số truy vấn. Tiếp theo là 2T dòng mô tả các truy vấn (các truy vấn độc lập với nhau).
  • Dòng đầu của mỗi truy vấn chứa hai số nguyên n và k.
  • Dòng thứ hai của mỗi truy vấn chứa n số nguyên a1<a2<…<an.

Dữ liệu ra

In ra T số nguyên — mỗi số là một điểm x ứng với giá trị fk(x) nhỏ nhất cho truy vấn tương ứng.

Ràng buộc

  • 1≤T≤2·105
  • 1≤n≤2·105, 0≤k<n
  • 1≤a1<a2<…<an≤109
  • Tổng n trên tất cả các truy vấn không vượt quá 2·105.

Ví dụ

Input Output Giải thích
3
3 2
1 2 5
2 1
1 1000000000
1 0
4
3
500000000
4
Truy vấn 1: k=2, cần khoảng cách lớn nhất trong 3 điểm nhỏ nhất; chọn x=3 cho các khoảng cách 2,1,2 nên f2(3)=2, là nhỏ nhất. Truy vấn 2: k=1, chọn điểm giữa của 1 và 109. Truy vấn 3: chỉ có một điểm, chọn ngay điểm đó nên f0(4)=0.
1
4 2
5 45 55 65
55 k=2 nên cần khoảng cách lớn nhất trong 3 điểm gần nhất. Cửa sổ 3 điểm liên tiếp có độ rộng nhỏ nhất là {45,55,65} (rộng 20); chọn x=55 cho f2(55)=10.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0