#include<bits/stdc++.h>
using namespace std;
int n,t;
double ans;
struct node{
double m;
double v;
double v_;
}V[105],tmp[105];
void merge_sort(int l,int r){
if(r-l<=1) return ;
int mid=l+((r-l)>>1);
merge_sort(l,mid);
merge_sort(mid,r);
for(int i=l,j=mid,k=l;k<r;k++){
if(j==r || (i<mid && V[i].v_>=V[j].v_)){
tmp[k]=V[i++];
}
else tmp[k]=V[j++];
}
for(int i=l;i<r;i++){
V[i]=tmp[i];
}
}
int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int main(){
n=read(),t=read();
for(int i=0;i<n;i++){
V[i].m=read(),V[i].v=read();
V[i].v_=V[i].v/V[i].m;
}
int M=0;
merge_sort(0,n);
while(t!=0){
t>=V[M].m ? ( t-=V[M].m , ans+=V[M].v) : ( ans+=V[M].v_*t , t=0);
M++;
}
printf("%.2lf",ans);
return 0;
}