/*
TASK:stairs
LANG:C++
*/
#include<stdio.h>
double masiv[110][2],pay,min,gold;
int n,k,x,xmin;

void input()
{
scanf("%d%d",&n,&k);
for(x=0;x<n;x++)
scanf("%lf%lf",&masiv[x][0],&masiv[x][1]);
return;
}

void remove_minimal()
{
min=masiv[1][0]*masiv[0][1];
xmin=0;
for(x=1;x<n-1;x++)
{
//gold[x]-zlatoto za premahvane na stypalo x
//stylbi[0][0] i stylbi[n-1][1] nikoga ne se izpolzvat
//syotvetno, nikoga ne mojem da mahnem poslednoto stypalo
if(masiv[x+1][0]*masiv[x][1]<min)
        {
        min=masiv[x+1][0]*masiv[x][1];
        xmin=x;
        }

}
pay+=min;
masiv[xmin+1][0]+=masiv[xmin][0];
masiv[xmin+1][1]+=masiv[xmin][1];
masiv[xmin][0]=0;
masiv[xmin][1]=0;
return;
}

void create_new_stairs()
{
for(x=0;x<n;x++)
if(masiv[x][0]==0&&masiv[x][1]==0)
        {
//vprochem, vinagi ili i dvete sa izpylneni, ili i dvete ne sa.
//no za vseki sluchai...
        masiv[x][0]=masiv[x+1][0];
        masiv[x][1]=masiv[x+1][1];
        masiv[x+1][0]=0;
        masiv[x+1][1]=0;
        //moje i po-optimizirano, no vse pak n<=100 - nqma nujda ot svyrzan spisyk
        }
return;
}

int main()
{
input();
if(k==n)
        {
        printf("0\n");
        return 0;
        }

while(n>k)
{
remove_minimal();
create_new_stairs();
n--;
}

printf("%.3lf\n",pay);
return 0;
}

