Pagini recente » Cod sursa (job #3274902) | Cod sursa (job #250763) | Cod sursa (job #2259887) | Cod sursa (job #522323) | Cod sursa (job #57326)
Cod sursa(job #57326)
program lapte;
const
fin='lapte.in';
fout='lapte.out';
nmax=100;
type
milk=record
a,b:integer;
end;
var
a:array[1..nmax] of milk;
st,dr,mid,n,t,tmax,i,j,x,y:integer;
procedure qsort(st,dr:integer);
var
i,j,x:integer;
aux:milk;
begin
i:=st;j:=dr;
x:=a[(st+dr)shr 1].b;
repeat
while a[j].b>x do
dec(j);
while a[i].b<x do
inc(i);
if i<=j then
begin
aux:=a[i];a[i]:=a[j];a[j]:=aux;
inc(i);dec(j);
end;
until i>j;
if j>st then
qsort(st,j);
if i<dr then
qsort(i,dr);
end;
function check(tmax:integer):boolean;
var
c1,c2,c:integer;
begin
c1:=0;c2:=0;
for i:=1 to n do
inc(c1,tmax div a[i].a);
if c1>=t then
for i:=1 to n do
begin
c:=(c1-t);
if c>tmax div a[i].a then
c:=tmax div a[i].a;
inc(c2,(c*a[i].a+tmax mod a[i].a)div a[i].b);
dec(c1,c);
end;
check:=(c1>=t)and(c2>=t);
end;
procedure scrie(tmax:integer);
var
c1,c2,c:integer;
begin
c1:=0;c2:=0;
for i:=1 to n do
inc(c1,tmax div a[i].a);
for i:=1 to n do
begin
c:=(c1-t);
if c>tmax div a[i].a then
c:=tmax div a[i].a;
writeln(((tmax div a[i].a)-c),' ',(c*a[i].a+tmax mod a[i].a)div a[i].b);
inc(c2,(c*a[i].a+tmax mod a[i].a)div a[i].b);
dec(c1,c);
end;
end;
begin
assign(input,fin);
reset(input);
readln(n,t);
for i:=1 to n do
readln(a[i].a,a[i].b);
assign(output,fout);
rewrite(output);
qsort(1,n);
st:=1;dr:=100;
while st<dr do
begin
mid:=(st+dr)shr 1;
if check(mid) then
dr:=mid
else
st:=mid+1;
end;
writeln(st);
scrie(st);
close(output);
end.