Pagini recente » Cod sursa (job #1911233) | Cod sursa (job #369904) | Cod sursa (job #99) | Cod sursa (job #480244) | Cod sursa (job #473298)
Cod sursa(job #473298)
program shop;
var f, g:text;
max, poz, rez, sc, nrnv, n, c, l, aux:int64;
i, j:longint;
p, a, b, vpoz, vsc:array[1..100] of int64;
procedure citire;
begin
readln(f,n,c,l);
for i:=1 to n do
begin
read(f,a[i],b[i]);
vpoz[i]:=i;
end;
end;
procedure sortare;
begin
for i:=1 to n-1 do
begin
max:=a[i];
poz:=i;
for j:=i+1 to n do
if a[j]>max then
begin
max:=a[j];
poz:=j;
end;
aux:=a[i];
a[i]:=a[poz];
a[poz]:=aux;
aux:=b[i];
b[i]:=b[poz];
b[poz]:=aux;
aux:=vpoz[i];
vpoz[i]:=vpoz[poz];
vpoz[poz]:=aux;
end;
end;
function min(q,w:longint):longint;
begin
if q<w then
min:=q
else
min:=w;
end;
procedure rezolvare;
begin
a[n+1]:=0;
p[n+1]:=1;
for i:=n downto 1 do
begin
p[i]:=p[i+1];
for j:=a[i+1]+1 to a[i] do
p[i]:=p[i]*c;
end;
for i:=1 to n do
begin
nrnv:=l div p[i];
sc:=min(nrnv,b[i]);
vsc[i]:=sc;
l:=l-sc*p[i];
rez:=rez+sc;
end;
writeln(g,rez);
for i:=1 to n do
for j:=1 to n do
if vpoz[j]=i then
write(g,vsc[j],' ');
writeln(g);
end;
begin
assign(f,'shop.in'); reset(f);
assign(g,'shop.out'); rewrite(g);
citire;
sortare;
rezolvare;
close(f);
close(g);
end.