Cho 2 mảng số nguyên A và B lần lượt có N và M số. Các phần tử trong cả 2 mảng A và B được sắp xếp theo thứ tự tăng dần Yêu cầu: Hãy tạo mạng C gồm N+M phần tử từ tất cả các phần tử của A và B sao cho các phần tử của C cũng có thứ tự tăng dần Dữ liệu vào trong file: tronmang.inp - dòng đầu chứa 2 số N M (0<N, M< 50000) N dòng sau mỗi dòng chứa một số nguyên của mảng A M dòng tiếp theo chứa một số nguyên ứng với các phần tử của mảng B vd tronmnang.inp tronmang.out 3 2 1 1 2 2 2 5 4 2 5 4 mọi người hoàn thiện giúp em chương trình mà em viết: var a,b,c:array[0..10000] of longint; i,j,k,n,m: longint; begin readln(n,m); for i:=1 to n do read(a[i]); for j:=1 to m do read(b[i]); while (i<=n) and (j<=m) do begin if a[i]<b[i] then begin inc(k); c[k]:=a[i]; inc(i); end else begin inc(k); c[k]:=b[j]; inc (j); end while (i=n) or (j=m) do ..... giúp em với cách làm: là khi i=n hoặc j=m tức là khi i chạy đến cuối vd ở trên là i chạy đến 5 mà j mới 2 thì mik hốt luôn cả cho 5 2 4 vào mảng c luôn ạ ai viết ra câu lện giùm em với hoàn thiện chương trình ạ
1 câu trả lời
uses crt;
var n,m:longint;
a,b,c:array[0..100000] of longint;
i,j,k,p:longint;
begin
clrscr;
readln(n,m);
for i:=1 to n do read(a[i]);
for i:=1 to m do read(b[i]);
i:=1;j:=1;
while (i <= n) or (j <= m) do
begin
if i > n then
begin
for p:=j to m do
c[k + p - j + 1]:=b[p];
break;
end;
if j > m then
begin
for p:=i to n do
c[k + p - i + 1]:=a[p];
break;
end;
if a[i] > b[j] then
begin
inc(k);
c[k]:=b[j];
inc(j);
end
else
begin
inc(k);
c[k]:=a[i];
inc(i);
end;
end;
for i:=1 to n + m do writeln(c[i]);
readln;
end.