#include<iostream>
#include <iomanip>
using namespace std;
struct pile {
int m;
int v;
float unit;
};
void BubbleSort(pile piles[],int N) {
int i, j;
for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - i - 1; j++) {
if (piles[j].unit < piles[j + 1].unit) {
swap(piles[j].unit, piles[j + 1].unit);
}
}
}
}
double caculataunit(pile piles[],int N,int T) {
for (int i = 0; i < N; i++) {
piles[i].unit = (double)piles[i].v / piles[i].m;
}
BubbleSort(piles, N);
double total_value = 0.0;
for (int i = 0; i < N; i++) {
if (T >= piles[i].m) {
total_value += piles[i].v;
T -= piles[i].m;
}
else {
double surplesvalue = (double)T / piles[i].m;
total_value += piles[i].v * surplesvalue;
T = 0;
break;
}
}
return total_value;
}
int main() {
int N, T;
cin >> N >> T;
pile piles[100];
for (int i = 0; i < N; i++) {
cin >> piles[i].m >> piles[i].v;
}
double max_value = caculataunit(piles, N, T);
cout << fixed << setprecision(2) << max_value << endl;
return 0;
}