printf用%d时答案整数部分是对的,但是保留两位小数是就0.00了???
#include<bits/stdc++.h>
using namespace std;
int n;
double t,ans;
struct data {
double m;
double v;
} a[101];
bool cmp (data a,data b) {
return (a.v/a.m)>(b.v/b.m);
}
int main(){
scanf("%d%d",&n,&t);
for (int i=1;i<=n;i++) scanf("%d%d",&a[i].m,&a[i].v);
sort(a+1,a+n+1,cmp);
for (int i=1;i<=n;i++) {
if (t>=a[i].m) {
t-=a[i].m;
ans+=a[i].v;
}
else {
ans+=t*(a[i].v/a[i].m);
break;
}
}
printf("%.2lf",ans);
return 0;
}