/************************************************************************* File Name: 1009.cpp Author: yubo Mail: yuzibode@126.com Created Time: 2014年04月12日 星期六 07时45分55秒 学习重点: ************************************************************************/ #include<cstring> #include<algorithm> #include<cstdio> #include<iostream> using namespace std; struct Node{ int j; int f; double x; }T[1000]; bool cmp(const Node&a,const Node&b) { return a.x<b.x; } int main() { //freopen("in.txt","r",stdin); int M,n,i,j,f; double sum; while(scanf("%d%d",&M,&n)){ if(M==-1&&n==-1) break; sum=0; for(i=0;i<n;i++) { scanf("%d%d",&T[i].j,&T[i].f); T[i].x=(double)(T[i].f/(T[i].j*1.0)); //printf("%lf\t",T[i].x); } sort(T,T+n,cmp); for(i=0;i<n;i++){ if(M>=T[i].f) { M=M-T[i].f; sum=sum+(double)T[i].j; } else { sum=sum+(double)(T[i].j/(T[i].f*1.0)*M); break; } } printf("%0.3lf\n",sum); } }
原文:http://blog.csdn.net/yuzibo747/article/details/23560209