混合牛奶pascal程序
题意
给出Marry乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购足够数量的牛奶所需的最小花费。
分析
排序,最小价值优先取,太多了就退出循环,输出(之前的价值+还有多少需求*退出时的单价)。
var
n,m,i,j,tj:longint;
a,b:array[0..5000]of longint;
procedure kp(l,r:longint);
var
i,j,mid:longint;
begin
if l>=r then exit;
i:=l;j:=r;mid:=a[(l+r) div 2];
repeat
while a[i]<mid do inc(i);
while a[j]>mid do dec(j);
if i<=j then
begin
a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
b[0]:=b[i];b[i]:=b[j];b[j]:=b[0];
inc(i);dec(j);
end;
until i>j;
kp(l,j);
kp(i,r);
end;
begin
readln(n,m);
for i:=1 to m do
readln(a[i],b[i]);
kp(1,m);
tj:=0;
i:=1;
while (i<=m)and(b[i]<=n) do
begin
tj:=tj+a[i]*b[i];
n:=n-b[i];
inc(i);
end;
write(tj+n*a[i]);
end.