#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 100;
int m[N], v[N];//存储质量和价值
double z[N];//存储性价比
int main()
{
double N, T;
cin >> N >> T;//输入个数和背包空间
for (int i = 0; i < N; i++) {
cin >> m[i] >> v[i];//输入钱堆
z[i] = double(v[i]) / m[i];//并且计算性价比
}
double sum = 0;//计算总和
while (T > 0)
{
double max = 0;
int maxi = 0;
bool o = 1;//记录是否还有钱堆(z[i]>0)
for (int i = 0; i < N; i++)
if (max < z[i])//寻找性价比最高的钱堆
{
o = 0;//还有钱堆可选
max = z[i];
maxi = i;
}
if (o)break;//没有钱堆可选则退出
double t = T * z[maxi];//计算预想取多少钱
if (v[maxi] >= t)//如果钱堆更多
{
sum += t;//则取出预想的钱
break;//退出
}
else//如果钱堆钱取完背包还有空间
{
T -= m[maxi];//则减少背包空间
sum += v[maxi];//积累钱
}
z[maxi] = 0;//将性价比设置为0
}
printf("%.2lf\n", sum);//输出累计和
return 0;
}