本文最后更新于 2181 天前,其中的信息可能已经有所发展或是发生改变。
#include<iostream>
using namespace std;
int main(){
int n,w;
float arr[10010][3];
cin>>n>>w;
for(int i=0;i<n;i++){
cin>>arr[i][0]>>arr[i][1];
arr[i][2]=arr[i][1]/arr[i][0];
}
for(int i=n-1;i>0;i--){
for(int j=0;j<n;j++){
if(arr[j][2]<arr[j+1][2]){
float temp=arr[j][0];
arr[j][0]=arr[j+1][0];
arr[j+1][0]=temp;
temp=arr[j][1];
arr[j][1]=arr[j+1][1];
arr[j+1][1]=temp;
temp=arr[j][2];
arr[j][2]=arr[j+1][2];
arr[j+1][2]=temp;
}
}
}
float sumw=0,val=0;int i=0;
while(true){
if(sumw+arr[i][0]<=w){
sumw+=arr[i][0];
val+=arr[i][1];
}
else{
val+=arr[i][2]*(w-sumw);
float answer=int(val*10+0.5)/10.0;
cout<<answer;
return 0;
}
i++;
}
return 0;
}