Pagini recente » Cod sursa (job #1210078) | Cod sursa (job #2924479) | Cod sursa (job #3188028) | Cod sursa (job #2717978) | Cod sursa (job #39013)
Cod sursa(job #39013)
const maxn = 32;
var f:text;
n,c,i,j,sol:longint;
m,k:int64;
a,b,d,t:array[1..maxn]of int64;
procedure readdata;
begin
assign(f,'shop.in');
reset(f);
readln(f,n,c,m);
for i:=1 to n do
begin
readln(f,a[i],b[i]);
d[i]:=i;
end;
close(f);
end;
procedure sort(l,r:longint);
var i,j,p,q:longint;
begin
i:=l;
j:=r;
p:=a[(l+r) div 2];
repeat
while a[i]<p do i:=i+1;
while p<a[j] do j:=j-1;
if i<=j then
begin
q:=a[i];
a[i]:=a[j];
a[j]:=q;
q:=b[i];
b[i]:=b[j];
b[j]:=q;
q:=d[i];
d[i]:=d[j];
d[j]:=q;
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;
procedure solve;
begin
sort(1,n);
for i:=1 to n do
begin
k:=1;
for j:=1 to a[i] do k:=k*c;
a[i]:=k;
end;
i:=n;
while m<>0 do
begin
while (m<a[i]) or (b[i]=0) do dec(i);
while (m>=a[i]) and (b[i]>0) do
begin
m:=m-a[i];
dec(b[i]);
inc(t[d[i]]);
inc(sol);
end;
end;
end;
procedure writedata;
begin
assign(f,'shop.out');
rewrite(f);
writeln(f,sol);
for i:=1 to n do
begin
write(f,t[i],' ');
end;
writeln(f);
close(f);
end;
begin
readdata;
solve;
writedata;
end.