fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. ios::sync_with_stdio(0);
  5. cin.tie(0);
  6. int n;
  7. long long V;
  8. cin>>n>>V;
  9. vector<long long> v(n),c(n);
  10. for(int i=0;i<n;i++){
  11. cin>>v[i];}
  12. for(int i=0;i<n;i++){
  13. cin>>c[i];
  14. }
  15. vector<pair<double, int>> kromek;
  16. kromek.reserve(n);
  17. for(int i=0;i<n;i++){
  18. if (v[i]>0){
  19. kromek.push_back({(double)c[i]/v[i],i});
  20. }}
  21. sort(kromek.begin(),kromek.end(),greater<>());
  22. double wynik=0.0;
  23. long long capacity=V;
  24. for (auto &p : kromek){
  25. if (capacity==0){
  26. break;}
  27. int i=p.second;
  28. if (v[i]<=capacity){
  29. wynik+=c[i];
  30. capacity-=v[i];}
  31. else{
  32. wynik+=p.first*capacity;
  33. capacity=0;
  34. }
  35. }
  36. cout<<fixed<<setprecision(7)<<wynik<<endl;
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0.01s 5292KB
stdin
5 10
6 4 2 3 6
10 4 3 5 18
stdout
24.6666667