题目描述
小明有一家自己的商店,主营牛奶饮品,最近资金紧张,他想以尽可能低的价格进购足够的牛奶以供日常的需要。但是小明年纪大了,脑子不好使了,想要求助你帮他想出一个最好的节省资金办法。
两个整数N and M.
第一个数, N, (0 <= N <= 2,000,000) 小明每天的牛奶需求量. 第二个数, M, (0 <= M <= 5,000) 小明可以购买的农场数.
每组的第二行到m+1行:<span class="\"Apple-tab-span\"" white-space:="" pre'"=""> 每行 Pi and Ai.
Pi (0 <= Pi <= 1,000)农场I的牛奶单价.
Ai (0 <= Ai <= 2,000,000)农场i的最大供应量.
输出
输出可以满足小明的需求的最低的价格
示例输入
100 5 5 20 9 40 3 10 8 80 6 30
示例输出
630#include<stdio.h> #include<string.h> int main() { int M,N,i,j,a[60000],b[60000],t,s,m,e; while(scanf("%d %d",&M,&N)!=EOF) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(i=0; i<N; i++) scanf("%d %d",&a[i],&b[i]); for(i=0; i<N-1; i++) for(j=i+1; j<N; j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; t=b[i]; b[i]=b[j]; b[j]=t; } s=0;m=0; for(i=0;i<N;i++) if(s<M) {s+=b[i];m+=b[i]*a[i];e=i;} m=m-a[e]*(s-M); printf("%d\n",m); } return 0; }
</pre>