Pagini recente » Cod sursa (job #80117) | Cod sursa (job #3039431) | Cod sursa (job #2339828) | Cod sursa (job #2272177) | Cod sursa (job #62299)
Cod sursa(job #62299)
var a,b:array[0..10000000] of longint; f1,f2:text;
ii,i,j,x,n,l,max,nr,s,k,p,ind,h:longint;
procedure pozitie(var m:longint; p,u:longint);
var i,j,di,dj,aux:longint;
begin
di:=0;
dj:=-1;
i:=p;
j:=u;
while i<j do
begin
if a[i]>a[j] then
begin
aux:=di;
di:=-dj;
dj:=-aux;
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
aux:=b[i];
b[i]:=b[j];
b[j]:=aux;
end;
i:=i+di;
j:=j+dj;
end;
m:=i;
end;
procedure quick(p,u:longint);
var m:longint;
begin
if p<u then
begin
pozitie(m,p,u);
quick(p,m-1);
quick(m+1,u);
end;
end;
begin
assign(f1,'lupu.in');
reset(f1);
assign(f2,'lupu.out');
rewrite(f2);
read(f1,n,x,l);
s:=x div l;
if x mod l>0 then inc(s);
for i:=1 to n do
begin
readln(f1,p,k);
if p<>0 then
begin
inc(j);
a[j]:=(p+l-1) div l;
b[j]:=k;
end
else
begin
if x mod l=0 then
begin
h:=1;
inc(j);
a[j]:=-1;
b[j]:=k;
end;
end;
end;
quick(1,j);
ii:=1;
if h=1 then dec(ii);
if h=1 then inc(s);
a[j+1]:=maxlongint;
for i:=1 to s do begin
inc(ii);j:=0;
max:=-maxlongint;
while a[j+1]<ii do
begin
inc(j);
if b[j]>max then
begin
max:=b[j];
ind:=j;
end;
end;
nr:=nr+max;
b[ind]:=0;
end;
writeln(f2,nr);
close(f1);
close(f2);
end.