const
fin='NHAHANG.inp'; fon='NHAHANG.out';
vc=1000000000000;
nmax = 50000+5;
type Tpt = record
a,b:int64;
end;
var
c:array[-1..nmax] of Tpt;
f,t,kq:array[-1..nmax] of int64;
n,i,p:longint;
function ss(x,y:tpt):boolean;
begin
if x.a<y.a then exit(true);
exit(false);
end;
procedure qs(l,r:longint);
var i,j:longint;
x,t:tpt;
begin
x:=c[(l+r) div 2];
i:=l;j:=r;
repeat
while ss(c[i],x)=true do inc(i);
while ss(x,c[j])=true do dec(j);
if i<=j then
begin
t:=c[i];c[i]:=c[j];c[j]:=t;
inc(i);dec(j);
end;
until i>j;
if L<j then qs(l,j);
if i<r then qs(i,r);
end;
procedure xuli;
var
i,j,jmax,z,d:longint;
begin
qs(1,n);
//for i:=1 to n do
// writeln(c[i].a,' ',c[i].b);
c[0].a:=0;c[0].b:=0;c[n+1].a:=vc; c[n+1].b:=1;
f[-1]:=-vc;
for i:=1 to n+1 do
begin
jmax:=-1;
for j:=0 to i-1 do
if (c[i].a-c[j].a>=p) then
if (f[j]>f[jmax]) then jmax:=j;
if jmax=-1 then f[i]:=0
else f[i]:=f[jmax]+c[i].b;
t[i]:=jmax;
end;
{truy vet}
z:=t[n+1];
d:=0;
repeat
inc(d);
kq[d]:=z;
z:=t[z];
until z=0;
writeln(f[n+1]-1);
//writeln(d);
//for i:=d downto 1 do writeln(kq[i],' ');
end;
begin
assign(input,fin);reset(input);
assign(output,fon);rewrite(output);
read(n,P);
for i:=1 to n do read(c[i].a,c[i].b);
xuli;
close(input);close(output);
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ứ Ba, 3 tháng 5, 2022
NHAHANG 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.