文章
28
粉丝
0
获赞
98
访问
3.5k
#include <bits/stdc++.h>
using namespace std;
struct node{
float milk;
float widget;
float danjia; //单价
};
bool cmp(node a,node b)
{
return a.danjia<b.danjia;
};
int main()
{
int x;
int n;
vector<node> shop; //由于后续要采用push_back()方法,故不设大小
while(cin>>x>>n)
{
shop.clear(); //第二轮循环若继续计算,要对shop里面的数据进行清除,即重新开始;不然数据只能过60%
if(x<0 || n<0) break;
while(n--)
{
float milk,widget,danjia;
cin>>milk>>widget;
danjia=widget/milk;
shop.push_back({milk,widget,danjia});
}//上述完成饮料和价格输入;
sort(shop.begin(),shop.end(),cmp);
float total=0; //记录已买容量
for(int i=0;i<shop.size();i++){
if(x>=shop[i].widget)
{
x-=shop[i].widget;
total+=shop[i].milk;
}else if(x>0) {
total+=(x/shop[i].danjia);
break;
}
}
printf("%.3f\n",total);
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发