记录编号 73696 评测结果 AAAAAAAAAA
题目名称 数对的个数 最终得分 100
用户昵称 GravatarGDFRWMY 是否通过 通过
代码语言 Pascal 运行时间 0.060 s
提交时间 2013-10-22 16:57:15 内存使用 0.93 MiB
显示代码纯文本
var
a,b,c,d,e,f,i,j,m,n,sum1,sum2,z,u:longint;
ans:int64;
k:array[0..200000]of longint;
procedure sort(l,r: longint);
      var
         i,j,x,y: longint;
      begin
         i:=l;
         j:=r;
         x:=k[(l+r) div 2];
         repeat
           while k[i]<x do
            inc(i);
           while x<k[j] do
            dec(j);
           if not(i>j) then
             begin
                y:=k[i];
                k[i]:=k[j];
                k[j]:=y;
                inc(i);
                j:=j-1;
             end;
         until i>j;
         if l<j then
           sort(l,j);
         if i<r then
           sort(i,r);
      end;
begin
assign(input,'dec.in');
assign(output,'dec.out');
reset(input);
rewrite(output);

readln(n,c);
for a:=1 to n do
read(k[a]);
sort(1,n);

k[0]:=-1;
u:=1;
z:=1;

while  u<=n do
begin
sum1:=0;
sum2:=0;
a:=z;



if k[n]-k[a]<c then break;

if k[u]-k[z]=c then
begin

for b:=a to n do
if k[a]=k[b] then
inc(sum1) else
if sum1<>0 then begin  z:=b; break; end;



for b:=u to n do
if k[a]=k[b]-c then
inc(sum2) else
if sum2<>0 then begin u:=b; break;   end;

ans:=ans+sum1*sum2;
continue;
end;

if  k[u]-k[z]<c then
begin
inc(u);
continue;
end;

if  k[u]-k[z]>c then
begin
inc(z);
continue;
end;



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