#include <stdio.h>
int main(){
int n,i,j,sit,d;
double count[1000],price[1000];
double count1[1000],price1[1000];
double money=0,max=0,temp;
scanf("%d %d",&n,&d);
for(i=0;i<n;i++){
scanf("%lf",&count[i]);
}
for(i=0;i<n;i++){
scanf("%lf",&price[i]);
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(price[j]/count[j] >price[i]/count[i] ){
temp=count[i]; count[i]=count[j]; count[j]=temp;
temp=price[i]; price[i]=price[j]; price[j]=temp;
}
}
}
for(i=0;i<n;i++){
if(d>count[i] && d>0){
money=money+price[i];
d=d-count[i]; //5
//printf("%.2lf\n",money);
}else if(d<=count[i] && d>0){
money=money+(price[i]/count[i])*d;
d=0;
// printf("%.2lf",money);
}else if(d==0) { break; }
}
printf("%.2lf",money);
return 0;
}

总结:
1.想要一组数列按顺序大小重新排序 一定要用交换的算法
其他的任何想法都是具麻烦且报错的
2.lf 是double类型 , %.2lf 就是保留两位小数