Trang chủ Tin Học Lớp 8 Nhân dịp tham gia hội thi Tin học tại Ninh...

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ạ

Câu hỏi :

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

Lời giải 1 :

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.

Thảo luận

-- Thế á, để đệ sửa 🤣
-- sao ko ddc banj
-- https://hoidap247.com/cau-hoi/3117473
-- sắp xếp như này thì tle :V
-- Đề đâu có giới hạn time đâu ạ uwu
-- bạn thử có đc ko
-- https://hoidap247.com/cau-hoi/3117473
-- https://hoidap247.com/cau-hoi/3130638

Lời giải 2 :

uses math;
var a:array[0..10000007] of int64;
    n,m,mi:int64;
    i:longint;
procedure sort(l,r:int64);
var i,j,x,tmp:int64;
begin
i := l; j := r; x := a[(i+j) div 2];
 repeat
   while a[i] < x do inc(i);
   while a[j] > x do dec(j);
   if (i <= j) then
     begin
        tmp := a[i];
        a[i] := a[j];
        a[j] := tmp;
        inc(i);dec(j);
     end;
 until (i > j);
if (l<j) then sort(l,j);
if (i<r) then sort(i,r);
end;
begin
assign(input,'buygifts.inp');reset(input);
assign(output,'buygifts.out');rewrite(output);
 readln(m,n);
mi := trunc(1e18);
for i := 1 to n do read(a[i]);
sort(1,n);
for i := 1 to n-m+1 do
mi := min(mi,a[i+m-1]-a[i]);
writeln(mi);
close(input);close(output);
end.


Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần, sang năm lại là năm cuối cấp áp lực lớn dần nhưng các em vẫn phải chú ý sức khỏe nhé!

Nguồn : ADMIN :))

Copyright © 2021 HOCTAP247