题目来源:蓝桥杯练习题
#include<iostream>
#include<algorithm>
using namespace std;
struct object{
int g;
int p;
double unitPrice;
}A[10010];
bool cmp(object a,object b){
return a.unitPrice>b.unitPrice;
}
int main(){
int n,w;
cin>>n>>w;
double sum=0;
for(int i=1;i<=n;i++){
cin>>A[i].g>>A[i].p;
A[i].unitPrice=1.0*A[i].p/A[i].g;
}
sort(A+1,A+n+1,cmp);
for(int i=1;i<=n;i++){
if(A[i].g<=w){
sum+=A[i].p;
w-=A[i].g;
}
else{
sum+=w*A[i].unitPrice;
break;
}
}
printf("%.1lf",sum);
return 0;
}