题目在这里:http://www.nocow.cn/index.php/Translate:USACO/milk 水题一只,不解释,直接上代码: { ID:asdcyt01 PROB:milk LANG:PASCAL } program milk(input,output); var n,m,i,total,totalmoney:longint; a,p:array[1..5000]of longint; procedure sort(l,r:longint); var i,j,m,t:longint; begin i:=l;j:=r;m:=p[(i+j)div 2]; repeat while p[i]<m do inc(i); while p[j]>m do dec(j); if i<=j then begin t:=p[i];p[i]:=p[j];p[j]:=t; t:=a[i];a[i]:=a[j];a[j]:=t; inc(i);dec(j); end; until i>j; if i<r then sort(i,r); if l<j then sort(l,j); end; begin assign(input,'milk.in');reset(input); assign(output,'milk.out');rewrite(output); readln(n,m); for i:=1 to m do readln(p[i],a[i]); sort(1,m); total:=0;totalmoney:=0; i:=1; while total<n do begin if total+a[i]>n then begin inc(totalmoney,p[i]*(n-total)); break; end; inc(total,a[i]); inc(totalmoney,a[i]*p[i]); inc(i); end; writeln(totalmoney); close(input);close(output); end .