#include<bits/stdc++.h>
using namespace std;
struct knap{
int object;
double PbW;
};
bool comparePbW(knap n1,knap n2)
{
if(n1.PbW > n2.PbW) return true;
else return false;
}
int main()
{
int n,m;
cin>>n>>m;
int profit[n];
int weight[n];
for(int i=0; i<n; i++)
{
cin>>profit[i];
}
for(int i=0; i<n; i++)
{
cin>>weight[i];
}
knap sack[n];
for(int i=0; i<n; i++)
{
sack[i].object=i;
sack[i].PbW = double(profit[i])/double(weight[i]);
}
sort(sack, sack+n, comparePbW);
int RW =m;
double X[n];
memset(X, 0.0, sizeof(X));
int i=0;
while(RW>0)
{
if(RW>=weight[sack[i].object])
{
X[sack[i].object] =1;
RW = RW - weight[sack[i].object];
i++;
}
else
{
X[sack[i].object] = double(RW)/double(weight[sack[i].object]);
RW = 0;
}
}
for(int i=0; i<n; i++)
{
cout<<X[i]<<" ";
}
double maxprofit =0;
for(int i=0; i<n; i++)
{
maxprofit = maxprofit +(X[i]*double(profit[i]));
}
cout<<endl<<maxprofit<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpzdHJ1Y3Qga25hcHsKICAgIGludCBvYmplY3Q7CiAgICBkb3VibGUgUGJXOwp9OwoKYm9vbCBjb21wYXJlUGJXKGtuYXAgbjEsa25hcCBuMikKewogICAgaWYobjEuUGJXID4gbjIuUGJXKSByZXR1cm4gdHJ1ZTsKICAgIGVsc2UgcmV0dXJuIGZhbHNlOwp9CgoKCmludCBtYWluKCkKewogICAgaW50IG4sbTsKICAgIGNpbj4+bj4+bTsKICAgIGludCBwcm9maXRbbl07CiAgICBpbnQgd2VpZ2h0W25dOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgewogICAgICAgIGNpbj4+cHJvZml0W2ldOwoKICAgIH0KICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykKICAgIHsKICAgICAgICBjaW4+PndlaWdodFtpXTsKICAgIH0KCiAgICBrbmFwIHNhY2tbbl07CiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspCiAgICB7CiAgICAgICAgc2Fja1tpXS5vYmplY3Q9aTsKICAgICAgICBzYWNrW2ldLlBiVyA9IGRvdWJsZShwcm9maXRbaV0pL2RvdWJsZSh3ZWlnaHRbaV0pOwoKICAgIH0KICAgIHNvcnQoc2Fjaywgc2FjaytuLCBjb21wYXJlUGJXKTsKCiAgICBpbnQgUlcgPW07CiAgICBkb3VibGUgWFtuXTsKICAgIG1lbXNldChYLCAwLjAsIHNpemVvZihYKSk7CiAgICBpbnQgaT0wOwogICAgd2hpbGUoUlc+MCkKICAgIHsKICAgICAgICBpZihSVz49d2VpZ2h0W3NhY2tbaV0ub2JqZWN0XSkKICAgICAgICB7CiAgICAgICAgICAgIFhbc2Fja1tpXS5vYmplY3RdID0xOwogICAgICAgICAgICBSVyA9IFJXIC0gd2VpZ2h0W3NhY2tbaV0ub2JqZWN0XTsKICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBYW3NhY2tbaV0ub2JqZWN0XSA9IGRvdWJsZShSVykvZG91YmxlKHdlaWdodFtzYWNrW2ldLm9iamVjdF0pOwogICAgICAgICAgICBSVyA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykKICAgIHsKICAgICAgICBjb3V0PDxYW2ldPDwiICI7CiAgICB9CiAgICBkb3VibGUgbWF4cHJvZml0ID0wOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgewoKICAgICAgICBtYXhwcm9maXQgPSBtYXhwcm9maXQgKyhYW2ldKmRvdWJsZShwcm9maXRbaV0pKTsKCiAgICB9CiAgICBjb3V0PDxlbmRsPDxtYXhwcm9maXQ8PGVuZGw7CgoKCgoKfQoKCgoKCgo=