#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));// sob lola array valu gola ke 0 korbe
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;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qga25hcHsKICAgIGludCBvYmplY3Q7CiAgICBkb3VibGUgcGJ3Owp9OwoKYm9vbCBjb21wYXJlcGJ3KGtuYXAgbjEsa25hcCBuMikKewoKICAgIGlmKG4xLnBidyA+IG4yLnBidykgcmV0dXJuIHRydWU7CiAgICBlbHNlIHJldHVybiBmYWxzZTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgbiwgbTsKICAgIGNpbiA+PiBuID4+IG07CiAgICBpbnQgcHJvZml0W25dOwogICAgaW50IHdlaWdodFtuXTsKICAgIGZvcihpbnQgaSA9IDA7IGk8IG47IGkrKykKICAgICAgICBjaW4gPj4gcHJvZml0W2ldOwogICAgZm9yKGludCBpID0gMDsgaTwgbjsgaSsrKQogICAgICAgIGNpbiA+PiB3ZWlnaHRbaV07CgogICAgIGtuYXAgc2Fja1tuXTsKICAgICBmb3IoaW50IGkgPSAwOyBpPCBuOyBpKyspCiAgICB7CgogICAgICAgIHNhY2tbaV0ub2JqZWN0ID0gaTsKICAgICAgICBzYWNrW2ldLnBidyA9IGRvdWJsZShwcm9maXRbaV0pL2RvdWJsZSh3ZWlnaHRbaV0pOwogICAgfQoKICAgIHNvcnQoc2FjayxzYWNrK24sY29tcGFyZXBidyk7CgogICAgaW50IHJ3ID0gbTsKICAgIGRvdWJsZSB4W25dOwogICAgbWVtc2V0KHgsMC4wLHNpemVvZih4KSk7Ly8gc29iIGxvbGEgYXJyYXkgdmFsdSBnb2xhIGtlIDAga29yYmUKICAgIGludCBpID0gMDsKICAgIHdoaWxlIChydz4wKQogICAgewoKICAgICAgICBpZihydz49IHdlaWdodFtzYWNrW2ldLm9iamVjdF0pCiAgICAgICAgewoKICAgICAgICAgICAgeFtzYWNrW2ldLm9iamVjdF0gPSAxOwogICAgICAgICAgICBydyA9IHJ3LXdlaWdodFtzYWNrW2ldLm9iamVjdF07CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICB4W3NhY2tbaV0ub2JqZWN0XT0gZG91YmxlKHJ3KS9kb3VibGUod2VpZ2h0W3NhY2tbaV0ub2JqZWN0XSk7CiAgICAgICAgcncgPSAwOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IGkgPTA7IGk8IG47aSsrKQogICAgewoKICAgICAgICBjb3V0IDw8IHhbaV0gPDwgIiAiOwogICAgfQoKICAgIGRvdWJsZSBtYXhwcm9maXQgPSAwOwogICAgZm9yKGludCBpID0wOyBpPG47aSsrKQogICAgewoKICAgICAgICBtYXhwcm9maXQ9IG1heHByb2ZpdCsoeFtpXSpkb3VibGUocHJvZml0W2ldKSk7CiAgICB9CiAgICBjb3V0IDw8IGVuZGwgPDwgbWF4cHJvZml0IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K