Pagini recente » Cod sursa (job #1231876) | Cod sursa (job #2888604) | Cod sursa (job #19275) | Cod sursa (job #2825667) | Cod sursa (job #37665)
Cod sursa(job #37665)
type ban=record
a,min:int64;
end;
var v,x:array[1..33]of ban;
s,smin:array[1..33]of int64;
n,c,i,j,t,nr,nmin:longint;
l:int64;
aux:ban;
procedure back(k:longint);
var i:longint;
su:int64;
begin
if k=n then
begin
su:=0;
for i:=1 to k do
su:=su+v[i].a*s[i];
if su=l then
begin
nmin:=0;
for i:=1 to k do
nmin:=nmin+s[i];
smin:=s;
exit;
end;
end
else
begin
for i:=1 to v[k+1].min do
begin
s[k+1]:=i;
back(k+1);
end;
end;
end;
begin
assign(input,'shop.in');reset(input);
assign(output,'shop.out');rewrite(output);
readln(n,c,l);
for i:=1 to n do
read(v[i].a,v[i].min);
for i:=1 to n do
begin
t:=1;
for j:=1 to v[i].a do
t:=t*c;
v[i].a:=t;
end;
for i:=1 to n do
if l div v[i].a<v[i].min then
v[i].min:=l div v[i].a;
x:=v;
for i:=1 to n do
for j:=i+1 to n do
if v[i].a<v[j].a then
begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
end;
back(0);
writeln(nmin);
for i:=1 to n do
begin
for j:=1 to n do
if (v[i].a=x[j].a)and(v[i].min=x[j].min) then
begin
s[j]:=smin[i];
break;
end;
end;
for i:=1 to n do
write(s[i],' ');
close(input);close(output);
end.