不是哥们,你数量要定义double我是真的没想到
我只能说,难道他是个天才?
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define sz(x) (int)x.size()
struct o{
double num;
double money;
double x;
};
int cmp(o a,o b){
return a.x>b.x;
}
void solve() {
int n,m;cin>>n>>m;
vector<o>a(n);
for(int i=0;i<n;i++)cin>>a[i].num;
for(int i=0;i<n;i++){
cin>>a[i].money;
a[i].x=1.0*a[i].money/a[i].num;
}
int cnt=0;
double ans=0;
sort(a.begin(),a.end(),cmp);
for(int i=0;i<n;i++){
if(cnt+a[i].num<=m){
ans+=a[i].money;
cnt+=a[i].num;
}else if(cnt<m){
ans+=(m-cnt)*a[i].x;
break;
}
}
printf("%.2lf",ans);
}
signed main() {
solve();
return 0;
}