Pascal难题

2025-04-14 17:05:54
推荐回答(1个)
回答1:

var
  n,s,i,j,ans:longint;
  a:array[1..50000]of longint;
procedure sort(l,r:longint);
var
  i,j,m,t:longint;
begin
  i:=l;
  j:=r;
  m:=a[(l+r)>>1];
  repeat
    while a[i]    while a[j]>m do dec(i);
    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  if iend;
begin
  read(n,s);
  for i:=1 to n do read(a[i]);
  sort(1,n);  i:=1;
  j:=n;
  while i    while a[i]+a[j]>s do dec(j);
    inc(ans,j-i);
    inc(i);
  end;
  writeln(ans);
end.