var
a:array [0..1000000] of longint;
n,m,b:longint;res:qword;
d:array[0..100000] of longint;
procedure nhap;
var i:longint;
begin
readln(n,b);
for i:=1 to n do readln(a[i]);
end;
procedure sort(l,r:longint);
var i,j,m,x,y:longint;
begin
i:=l;j:=r;
m:=random(r-l)+l+1;
x:=a[m];
repeat
while a[i]<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
y:=a[i];a[i]:=a[j];a[j]:=y;
inc(i);dec(j);
end;
until i>j;
if i<r then sort(i,r);
if l<j then sort(l,j);
end;
function chatmax(l,r,x:longint):longint;
var m,res:longint;
begin
res:=0;
while l<=r do
begin
m:=(l+r) div 2;
if (a[m]<=x) then
begin
res:=m;
l:=m+1;
end
else r:=m-1;
end;
if a[res]=x then exit(res)
else exit(0);
end;
function chatmin(l,r,x:longint):longint;
var m,res:longint;
begin
res:=0;
while l<=r do
begin
m:=(l+r) div 2;
if a[m]>=x then
begin
res:=m;
r:=m-1;
end
else l:=m+1;
end;
if a[res]=x then exit(res)
else exit(0);
end;
procedure xuli;
var i,j,x,y:longint;
begin
sort(1,n);
res:=0;
for i:=1 to n-1 do
begin
x:=chatmin(i+1,n,b-a[i]);
y:=chatmax(i+1,n,b-a[i]);
if (x<>0) then res:=res+(y-x+1);
end;
writeln(res);
end;
begin
assign(input,'bcfriend.inp');reset(input);
assign(output,'bcfriend.out');rewrite(output);
nhap;
giai;
end.
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Thứ Hai, 9 tháng 5, 2022
BCFRIEND PASCAL
Đăng ký:
Đăng Nhận xét (Atom)
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.