/*************************************************************************
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