由于此题是简单题,直接上代码了
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
#include <algorithm>
using namespace std;
typedef struct
{
int javabean;
int food;
double bp; //javabean/food 性价比
}Trade;
bool Cmp(const Trade &t1,const Trade &t2)
{
return t1.bp>t2.bp;
}
int main()
{
int m=0,n=0; //m pouds food; n = n line;
for(;cin>>m>>n;)
{
if(m==-1&&n==-1)
break;
int ii;
double sum=0;
vector<Trade> v;
for(ii=0;ii<n;++ii)
{
Trade t;
cin>>t.javabean>>t.food;
t.bp= t.javabean*1.0/t.food;
v.push_back(t);
}
sort(v.begin(),v.end(),Cmp);
for(ii=0;ii<n;ii++)
{
if(m>v[ii].food)
{
sum+= v[ii].javabean;
m-= v[ii].food;
}
else
{
sum+= m*1.0/v[ii].food*v[ii].javabean;
m=0;
break;
}
}
cout.precision(3);
cout<<fixed<<sum<<endl;
}
return 0;
}