Pagini recente » Cod sursa (job #1226860) | Cod sursa (job #1951687) | Cod sursa (job #1597255) | Cod sursa (job #2138033) | Cod sursa (job #42777)
Cod sursa(job #42777)
const
lim=50;
var
v:array[1..lim] of int64;
p,c:array[1..lim] of int64;
base,l,i,j,n:longint;
sol,s,k:int64;
cate:array[1..lim] of int64;
procedure Sort(l, r: longint);
var
i, j : longint;
x, y : int64;
begin
i := l; j := r; x := v[(l+r) DIV 2];
repeat
while v[i] < x do i := i + 1;
while x < v[j] do j := j - 1;
if i <= j then
begin
y := v[i]; v[i] := v[j]; v[j] := y;
y := c[i]; c[i] := c[j]; c[j] := y;
y := p[i]; p[i] := p[j]; p[j] := y;
i := i + 1; j := j - 1;
end;
until i > j;
if l < j then Sort(l, j);
if i < r then Sort(i, r);
end;
function min(a,b:int64):int64;
begin
if a<b
then min:=a
else min:=b;
end;
begin
assign(input,'shop.in');
reset(input);
readln(n,base,l);
for i:=1 to n do
begin
read(k,c[i]);
v[i]:=1;
for j:=1 to k do
v[i]:=v[i]*base;
p[i]:=i;
end;
sort(1,n);
close(input);
s:=l; sol:=0;
for i:=n downto 1 do
begin
k:=min(s div v[i],c[i]);
s:=s-k*v[i];
cate[p[i]]:=k;
sol:=sol+k;
end;
assign(output,'shop.out');
rewrite(output);
writeln( sol);
for i:=1 to n do write(cate[i],' ');
close(output);
end.