文章
34
粉丝
0
获赞
360
访问
9.2k
#include <bits/stdc++.h>
using namespace std;
struct drink {
double mi;
double wi;
};
bool cmp(drink a, drink b) {
if (a.wi == 0 && b.wi == 0) return a.mi > b.mi;
if (a.wi == 0) return true;
if (b.wi == 0) return false;
return (a.mi / a.wi) > (b.mi / b.wi);
}
int main() {
int x, n;
while (scanf("%d %d", &x, &n) != EOF) {
drink dr[1000];
if (x == -1 && n == -1) break;
for (int i = 0; i < n; i++) {
scanf("%lf %lf", &dr[i].mi, &dr[i].wi);
}
stable_sort(dr, dr + n, cmp);
double ans = 0;
for (int j = 0; j < n; j++) {
if (x >= dr[j].wi) {
ans += dr[j].mi;
x -= dr[j].wi;
} else {
ans += x * (dr[j].mi / dr[j].wi); // 修复:累加而不是赋值
break;
}
}
printf("%.3lf\n", a...
登录后发布评论
暂无评论,来抢沙发