cho mảng A gồm n phần tử nguyên dương (n<=10^5, A(i)<=10^6) -nhập ngẫu nhiên mảng A 1. Tìm kiếm 3 phần tử lớn nhất trong mảng A 2. Tìm kiếm 100 phần tử nhỏ nhất trong mảng A 3. Tìm kiếm 10000 phần tử nhỏ nhất A 4. Sắp xếp tăng dần A 5. Tìm đoạn liên tục có tổng nhỏ hơn 10000 dài nhất ai giúp mk với đag cần gấp ;))
1 câu trả lời
uses crt;
var n,i,j,vt,m,t,tong,da,cu:longint; a,b,c,d,e:array[1..100000]of longint;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
b[i]:=a[i]; c[i]:=a[i]; d[i]:=a[i]; e[i]:=a[i]
end;
writeln('Cau 1:');
for i:=1 to 3 do
begin
vt:=1;
for j:=1 to n do if a[j]>a[vt] then vt:=j;
writeln(a[vt]); a[vt]:=low(longint);
end;
writeln('Cau 2:');
m:=n;
if m>100 then m:=100;
for i:=1 to m do
begin
vt:=1;
for j:=1 to n do if b[j]<b[vt] then vt:=j;
writeln(b[vt]); b[vt]:=high(longint);
end;
writeln('Cau 3:');
m:=n;
if m>10000 then m:=10000;
for i:=1 to m do
begin
vt:=1;
for j:=1 to n do if c[j]<c[vt] then vt:=j;
writeln(c[vt]); c[vt]:=high(longint);
end;
writeln('Cau 4:');
for i:=1 to n do
for j:=i to n do
if d[i]>d[j] then
begin t:=d[i]; d[i]:=d[j]; d[j]:=t; end;
for i:=1 to n do write(d[i],' '); writeln;
writeln('Cau 5:');
for i:=1 to n do
begin
j:=i-1;
tong:=0;
repeat
inc(j);
inc(tong,e[j]);
until (tong>10000)or(j=n);
if tong>=10000 then begin tong:=tong-e[j]; dec(j); end;
if (j-i+1>cu-da+1)and(tong<10000) then begin cu:=j; da:=i; end;
end;
writeln(da,'=> ',cu);
readln
end.