Thứ Tư, 27 tháng 4, 2022

DONGPHUC PASCAL

var    a,b,aa,bb:array[1..100005] of int64;
    n,m,i,j,x,y,d:longint;
    
procedure nhap;
var i:longint;
begin
    readln(n,m,x,y);
    for i:=1 to n do read(a[i]);
    readln;
    for i:=1 to m do read(b[i]);
end;

procedure qs_a(l,h:longint);
var x,i,j,t:longint;
begin
       x:=a[(l+h) div 2];
    i:=l;j:=h;
    repeat
        while a[i] < x do inc(i);
        while a[j] > x do dec(j);
        if i<=j then
        begin
            t:=a[i];a[i]:=a[j];a[j]:=t;
            inc(i);dec(j);
         end;
   until i>j;
   if L<j then qs_a(L,j);
   if i<H then qs_a(i,H);
end;

procedure qs_b(l,h:longint);
var x,i,j,t:longint;
begin
    x:=b[(l+h) div 2];
    i:=l;j:=h;
    repeat
        while b[i] < x do inc(i);
        while b[j] > x do dec(j);
        if i<=j then
        begin
            t:=b[i];b[i]:=b[j];b[j]:=t;
            inc(i);dec(j);
         end;
   until i>j;
   if L<j then qs_b(L,j);
   if i<H then qs_b(i,H);
end;


procedure giai;
var i,j:longint;
begin
    qs_a(1,n);
    qs_b(1,m);
    i:=1; j:=1;
    while (i<=n) and (j<=m) do
    begin
           if b[j]<a[i]-x then inc(j)//ao qua chat
           else
              if b[j]>a[i]+y then inc(i)//ao qua rong
              else //mac duoc
                 begin
                   inc(d);
                   aa[d]:=i;
                   bb[d]:=j;
                   inc(i);inc(j);
              end;
    end;

    writeln(d);           
    //for i:=1 to c do writeln(aa[i],' ',bb[i]);
end;

begin
    assign(input, 'dongphuc.inp');reset(input);
    assign(output, 'dongphuc.out');rewrite(output);
    nhap;
    giai;
end.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.