题目描述挺简单的,也很容易分析。可以作为练习快排和贪心使用
var t,f:array[0..1010] of longint; i,j,m,n,k,l:longint; procedure qsort(l,r:longint); var i,j,k,p:longint; begin i:=l; j:=r; k:=t[(i+j)>>1]; repeat while t[i]<k do inc(i); while t[j]>k do dec(j); if i<=j then begin p:=t[i]; t[i]:=t[j]; t[j]:=p; p:=f[i]; f[i]:=f[j]; f[j]:=p; inc(i); dec(j); end; until i>j; if i<r then qsort(i,r); if j>l then qsort(l,j); end; begin readln(m,n); for i:=1 to n do read(t[i],f[i]); qsort(1,n); j:=1; n:=m; while n<>0 do begin if n>f[j] then begin inc(l,f[j]*t[j]); inc(j); dec(n,f[j-1]); end else begin inc(l,n*t[j]); n:=0; end; end; writeln(l); end.
时间: 2024-11-19 15:31:01