Pagini recente » Cod sursa (job #1821446) | Cod sursa (job #3232891) | Cod sursa (job #1669858) | Cod sursa (job #1825571) | Cod sursa (job #63324)
Cod sursa(job #63324)
var n,l,i,poz,j:byte;
a,b,c:array[1..100] of real;
act1,act2:array[1..100] of integer;
ok:boolean;
s,s1,mp,va,vb,ramas,z,vas,vbs,t,vl1,vl2:real;
f,g:text;
begin
assign(f,'lapte.in'); reset(f);
assign(g,'lapte.out'); rewrite(g);
read(f,n,l);
for i:=1 to n do begin
read(f,a[i],b[i]);
a[i]:=1/a[i];
b[i]:=1/b[i];
c[i]:=a[i]/b[i];
vl1:=vl1+a[i];
vl2:=vl2+b[i];
end;
ok:=true;
repeat
ok:=true;
for i:=1 to n-1 do if c[i]<c[i+1] then begin
ok:=false;
z:=a[i];
a[i]:=a[i+1];
a[i+1]:=z;
z:=b[i];
b[i]:=b[i+1];
b[i+1]:=z;
z:=c[i];
c[i]:=c[i+1];
c[i+1]:=z;
end;
until ok=true;
for i:=1 to n do s:=s+c[i];
s1:=0;
mp:=s;
poz:=n;
while abs(s-2*s1)<=mp do begin
mp:=s-2*s1;
s1:=s1+c[poz];
poz:=poz-1;
end;
poz:=poz+1;
for i:=1 to poz do va:=va+a[i];
for i:=poz+1 to n do vb:=vb+b[i];
t:=0;
if va<vb then begin
t:=trunc(l/vb);
if l/vb<>trunc(l/vb) then t:=t+1;
i:=n+1;
while ramas<l-(t-1)*vb do begin
i:=i-1;
ramas:=ramas+b[i];
end;
if i>poz then for j:=i-1 downto poz+1 do vas:=vas+a[j];
ramas:=l-va*(t-1);
va:=va+vas;
ramas:=ramas-va;
if ramas/vl1=trunc(ramas/vl1) then t:=t+ramas/vl1 else t:=t+trunc(ramas/vl1)+1;
end
else begin
t:=trunc(l/va);
i:=poz+1;
if l/va<>trunc(l/va) then t:=t+1;
while ramas<l-(t-1)*va do begin
i:=i-1;
ramas:=ramas+a[i];
end;
if i>1 then for j:=i-1 downto 1 do vbs:=vbs+b[j];
ramas:=l-vb*(t-1);
vb:=vb+vbs;
ramas:=ramas-vb;
if ramas/vl2=trunc(ramas/vl2) then t:=t+ramas/vl2 else t:=t+trunc(ramas/vl2)+1;
end;
write(g,t:0:0);
close(g);
end.