Pagini recente » Cod sursa (job #2579302) | Cod sursa (job #406331) | Cod sursa (job #1826567) | Cod sursa (job #233424) | Cod sursa (job #141140)
Cod sursa(job #141140)
program lupul_rau;
type vector=array[1..100000]of int64;
var f,g:text;
a,b:vector;
v:array[1..100000]of 0..1;
ok,t,i,n,k,o,x,l,p:longint;
s:int64;
function poz(li,ls:longint):longint;
var i,j,modi,modj,m:longint;
man:int64;
begin
i:=li;
j:=ls;
modi:=0;
modj:=-1;
while (i<=j)do
begin
if (b[i]<b[j])then
begin
man:=a[i];
a[i]:=a[j];
a[j]:=man;
man:=b[i];
b[i]:=b[j];
b[j]:=man;
m:=modi;
modi:=-modj;
modj:=-m;
end;
i:=i+modi;
j:=j+modj;
end;
poz:=i;
end;
procedure quick(li,ls:longint);
begin
if (li<ls)then
begin
k:=poz(li,ls);
quick(li,k-1);
quick(k+1,ls);
end;
end;
function poz2(li,ls:longint):longint;
var i,j,modi,modj,m:longint;
man:int64;
begin
i:=li;
j:=ls;
modi:=0;
modj:=-1;
while (i<=j)do
begin
if (a[i]<a[j])then
begin
man:=a[i];
a[i]:=a[j];
a[j]:=man;
man:=b[i];
b[i]:=b[j];
b[j]:=man;
m:=modi;
modi:=-modj;
modj:=-m;
end;
i:=i+modi;
j:=j+modj;
end;
poz2:=i;
end;
procedure quick2(li,ls:longint);
begin
if (li<ls)then
begin
o:=poz2(li,ls);
quick(li,o-1);
quick(o+1,ls);
end;
end;
begin
assign(f,'lupu.in');
assign(g,'lupu.out');
reset(f);
rewrite(g);
read(f,n,x,l);
for i:=1 to n do
read(f,a[i],b[i]);
quick(1,n);
i:=1;
while (i<n)do
begin
p:=i;
while (b[i]=b[i+1])do
inc(i);
if (i>p)then
quick2(p,i);
inc(i);
end;
t:=1;
s:=0;
for i:=1 to n do
if (a[i]>x)then v[i]:=1 else v[i]:=0;
while true do
begin
ok:=0;
for i:=t to n do
if (v[i]=0)then
begin
ok:=1;
break;
end;
if (ok=0)then break;
s:=s+b[i];
t:=i+1;
for i:=t to n do
begin
a[i]:=a[i]+l;
if (a[i]>x)then v[i]:=1;
end;
end;
write(g,s);
close(f);
close(g);
end.