Nhân dịp tham gia hội thi Tin học tại Ninh Bình, Zin đã được ban tổ chức cho đi thăm quan khu du lịch Tràng An, mặc dù đã đắm mình trong cảnh đẹp tuyệt diệu tại nơi đây nhưng Zin vẫn không quên mua quà về cho các bạn ở trường. Sau khi đi một vòng Zin bước vào một cửa hàng lưu niệm. Chủ cửa hàng giới thiệu cho Zin n (2 ≤ n ≤ 105) món quà, món quà thứ i (1 ≤ i ≤ n) có giá ai đồng (1 ≤ ai ≤ 109). Zin muốn chọn mua m (2 ≤ m ≤ n) món quà để tặng cho m bạn. Để đảm bảo tương đối công bằng Zin muốn mua các món quà sao cho giá trị chênh lệch giữa món quà có giá trị cao nhất và thấp nhất là nhỏ nhất có thể. Dữ liệu vào: Từ file văn bản BUYGIFTS.INP có cấu trúc như sau: - Dòng 1: Chứa hai số nguyên dương n và m; - Dòng 2: Chứa n số nguyên dương a1, a2, ..., an - Các số trên mỗi dòng cách nhau bởi một kí tự cách trống. Kết quả: Ghi ra file BUYGIFTS.OUT gồm duy nhât số k là độ lệnh giữa món quà có giá trị cao nhất và món quà có giá trị thấp nhất mà Zin sẽ mua. Ví dụ: BUYGIFTS.INP BUYGIFTS.OUT 3 5 3 3 1 4 9 6 PASCAL HELP
1 câu trả lời
uses crt;
var f:text; i,j,n,m,kq,t:longint; a:array[1..100000]of longint;
begin
clrscr;
assign(f,'BUYGIFTS.INP');reset(f);
readln(f,n,m);
for i:=1 to n do read(f,a[i]);
close(f);
assign(f,'BUYGIFTS.OUT');rewrite(f);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;
kq:=high(longint);
for i:=1 to n-m+1 do
if a[i+m-1]-a[i]<kq then kq:=a[i+m-1]-a[i];
write(f,kq);
close(f);
end.