/*
TASK: BOOKS
LANG: C
*/

#include<stdio.h>

#define MAXN    256
#define MIN(a,b)   ( ((a) < (b) && (a) > 0) ? (a) : (b) )

int N,K,d[MAXN],s[MAXN];
long long F[201][101][201];

void solve()
{
          long long dnk=0,res=0;
          int i,j,k;
          for(i=1;i<=K;i++)
             F[1][i][2]=d[1]*s[1];
          for(i=1;i<=N;i++)
            for(j=1;j<=K;j++)
             for(k=1;k<=N && k<=i+1;k++)
             {
                dnk=F[i][j][k];
                if(!dnk)continue;
		if(j<=K)
                F[i][j+1][1]=MIN(F[i][j+1][1],dnk);
                if(k+1>N)continue;
                F[i+1][j][k+1]=MIN(F[i+1][j][k+1],dnk+d[k]*s[i+1]);
             }
	  for(i=1;i<=N;i++)if(res<F[N][K][i]){res=F[N][K][i];break;}
	  for(i=1;i<=N;i++)if(res > F[N][K][i] && F[N][K][i])res=F[N][K][i];
          printf("%lld\n",res);
}

int main()
{
        int i;
        scanf("%d %d",&N,&K);
        for(i=1;i<=N;i++)scanf("%d",&s[i]);
        for(i=1;i<=N;i++)scanf("%d",&d[i]);
        solve();
        return 0;
}
