Pagini recente » Cod sursa (job #2930728) | Cod sursa (job #2071246) | Cod sursa (job #454932) | Cod sursa (job #2362298) | Cod sursa (job #137450)
Cod sursa(job #137450)
type sir=record
tim,can:integer;
end;
var v,z:array[1..100000] of sir;
f,g:text;
i:integer;
j,min,m,y,n,s,x:longint;
procedure intercl(m,st,dr:integer);
var a,b,c,i:integer;
begin
a:=st;
b:=m+1;
c:=st;
z:=v;
while (a<=m) and (b<=dr) do begin
if v[a].tim>v[b].tim then begin
z[c]:=v[b];
inc(c);
inc(b);
end
else begin
z[c]:=v[a];
inc(c);
inc(a);
end;
end;
for i:=a to m do begin
z[c]:=v[i];
inc(c);
end;
for i:=b to dr do begin
z[c]:=v[i];
inc(c);
end;
v:=z;
end;
procedure merge(st,dr:integer);
var m:integer;
begin
m:=(st+dr) div 2;
if st<dr then begin
merge (st,m);
merge (m+1,dr);
intercl (m,st,dr);
end;
end;
begin
assign (f,'garaj.in');reset (f);
assign (g,'garaj.out');rewrite (g);
readln (f,n,m);
for i:=1 to n do begin
read (f,v[i].can,y);
v[i].tim:=y*2;
s:=s+v[i].can;
end;
merge (1,n);
x:=m div s;
if (m mod s)<>0 then inc(x);
for i:=1 to n do
min:=(x*v[n].tim);
write (g,min div 2,' ');
for i:=n downto 1 do begin
if m>0 then inc(j);
y:=min div v[i].tim;
m:=m-v[i].can*y;
end;
writeln (g,j);
close(f);
close(g);
end.