注意区别字符串的输入方式与整数的区别
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
struct goods{
double J;//重量
double F;//价格
double a;//性价比
bool operator < (const goods &A) const{
return a > A.a;
}
}buf[1001];
int main(){
double M;
int N;
while(scanf("%lf %d",&M,&N)!= EOF){
if(M==-1&&N==-1) break;
for(int i = 0; i < N; i++){
scanf("%lf %lf",&buf[i].J,&buf[i].F);
buf[i].a = buf[i].J / buf[i].F;
}
sort(buf,buf + N);
int idex = 0;
double max = 0;
while(M > 0&&idex < N){
if(M > buf[idex].F){
M -= buf[idex].F;
max += buf[idex].J;
}
else
{
max += buf[idex].a * M;
M = 0;
}
idex ++;
}
cout<<max<<endl;//printf 0.3lf
}
return 0;
}