注意 J[i]为0可以白嫖 一直没想到
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
struct node
{
double cost,gain;
double rate;
};
int cmp(node x,node y)
{
return x.rate>y.rate;
}
int main()
{
//freopen("C:\\Users\\Lenovo\\Desktop\\input.txt","r",stdin);
node arr[1010];
int m,n;
while (scanf("%d%d",&m,&n)&&m!=-1&&n!=-1)
{
double ans=0;
for(int i=0;i<n;i++)
{
scanf("%lf%lf",&arr[i].gain,&arr[i].cost);
if(arr[i].cost!=0)
arr[i].rate=arr[i].gain/arr[i].cost;
else
{
arr[i].rate=INT16_MAX;
}
}
sort(arr,arr+n,cmp);
for(int i=0;i<n;i++)
{
if(m>=arr[i].cost)
{
m-=arr[i].cost;
ans+=arr[i].gain;
}
else
{
ans+=(arr[i].rate*m);
break;
}
}
printf("%.3lf\n",ans);
}
return 0;
}