题解 P1296 【奶牛的耳语】

· · 题解

快排之后一头一头比较

用二重循环就行

program Project1;
  var n,d,i,j,ans:longint;
    a:array[1..1000000]of longint;
procedure qsort(l,r:longint);
  var i,j,t,mid:longint;
begin
  i:=l;
  j:=r;
  mid:=a[(l+r)div 2];
  repeat
    while a[i]<mid do inc(i);
    while a[j]>mid 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 qsort(l,j);
  if i<r then qsort(i,r);
end;
begin
  readln(n,d);
  for i:=1 to n do
    read(a[i]);
  readln;
  qsort(1,n);
  for i:=1 to n-1 do
    begin
      for j:=i+1 to n do
        begin
          if a[j]<=a[i]+d then inc(ans)
          else break;
        end;
    end;
  writeln(ans);
  readln;
  readln;
end.