哈哈哈哈哈又错了,错在了double上和while忘记判断超限上。
哈哈哈哈,哈哈哈,哈哈,哈。。。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<vector>
using namespace std;
struct node{
double kg;
double pr;
double p;
}mk[1000];
bool cmp(node a,node b){
return a.p>b.p;
}
int main(){
int n;
double d;
double sum=0;
scanf("%d %lf",&n,&d);
for(int i=0;i<n;i++){
scanf("%lf",&mk[i].kg);
}
for(int i=0;i<n;i++){
scanf("%lf",&mk[i].pr);
mk[i].p=mk[i].pr/mk[i].kg;
}
sort(mk,mk+n,cmp);
int num=0;
while(d>0){
if(num>=n) break;
if(mk[num].kg<=d){
sum+=mk[num].pr;
d-=mk[num].kg;
num++;
}
else{
sum+=mk[num].p*d;
d=0;
}
}
printf("%.2f",sum);
return 0;
}