#include<stdio.h>
void swap(float *a, float *b)
{
float c = *a;
*a = *b;
*b = c;
}
int main(){
int n,d,i,j;
float sum=0;
scanf("%d %d",&n,&d);
float x[1000],y[1000],z[1000];//x 为库存,y为价格,注意是总售价 z为单位质量的价格
for(i=0;i<n;i++){
scanf("%f",&x[i]);
}
for(i=0;i<n;i++){
scanf("%f",&y[i]);
}
for(i=0;i<n;i++){
z[i]=y[i]/x[i];
}
for(i=0;i<n;i++){
for(j=0;j<n-i;j++){
if(z[j]<z[j+1]){
swap(&y[j],&y[j+1]);
swap(&x[j],&x[j+1]);
swap(&z[j],&z[j+1]);
}
}
}
for(i=0;i<n;i++){
if(x[i]>=d){
sum+=(float)(y[i]*d/x[i]);
break;
}else{
sum+=y[i];
d-=x[i];
}
}
printf("%.2f",sum);
return 0;
}
不算难,要注意区分总价格和平均价格,也要考虑需求和供给的大小关系。