题二 朋友

来源:互联网 发布:iel数据库网址 编辑:程序博客网 时间:2024/04/28 02:49

 

题二 朋友

friend. .* *

【问题描述】

    mxy 即将前往新世界。

    在前往新世界的过程中,ta 遇见了两种人。一种是只和 lowb 做朋友,即当且仅当自己的能力值大于对方时他们会成为朋友,另一种是大神我们做朋友,即当且仅当自己的能力

值小于对方时他们会成为朋友。

    现在告诉你两种人的能力值。请你计算一共有多少对友好关系。

【输入】

    每组测试数据有三行。

    第一行有两个整数 mn(1 <= mn <= 20000),分别代表前者人数和后者人数。

    第二行 m 个数,第三行 n 个数,代表各自的能力值。

【输出】

   一行一个整数,表示有多少对友好关系。

【输入输出样例】

friend.in

5 3

8 1 7 3 1

3 6 1

friend.out

7


var
  n,m,ans,k,i:longint;
  a,b:array[0..20000]of longint;
procedure sort(l,r:longint);


var
  i,j,mid:longint;
begin
  if l>=r then exit;
  i:=l; j:=r; mid:=b[(l+r) div 2];
  repeat
    while b[i]<mid do inc(i);
    while b[j]>mid do dec(j);
    if i<=j then
      begin
        b[0]:=b[i];
        b[i]:=b[j];
        b[j]:=b[0];
        inc(i);
        dec(j);
      end;
  until i>j;
  sort(i,r);
  sort(l,j);
end;


function find(x:longint):longint;
var
  l,r,mid,tmp:longint;
begin
  l:=1; r:=m; mid:=0; tmp:=0;
  while l<=r do
    begin
      mid:=(l+r) div 2;
      if b[mid]<x then begin tmp:=mid; l:=mid+1 end
                  else r:=mid-1;
    end;
  find:=tmp;


end;


begin
  assign(input,'friend.in');   reset(input);
  assign(output,'friend.out');  rewrite(output);
  readln(n,m);
  for i:=1 to n do read(a[i]);
    readln;


  for i:=1 to m do read(b[i]);
  sort(1,m);


  ans:=0;


  for i:=1 to n do
    ans:=ans+find(a[i]);


  write(ans);
  close(input);
  close(output);
end.


原创粉丝点击