/*
TASK: books
LANG: C++
*/

#include <cstdio>
#include <vector>
#include <climits>

int main()
{
	unsigned int b, w;
	std::scanf("%u %u", &b, &w);
	std::vector<std::vector<long long unsigned int> > m(w+1);
	std::vector<unsigned int> pages(b+1);
	std::vector<unsigned int> costs(b+1);
	pages[0] = 0;
	for (unsigned int i = 1; i <= b; i++)
	    std::scanf("%u", &pages[i]);

	std::vector<std::vector<long long unsigned int> > p(b+1);
	for (unsigned int i = 0; i <= b; i++)
	    p[i].resize(b-i+2, 0);

	costs[0] = 0;
	for (unsigned int i = 1; i <= b; i++)
	    std::scanf("%u", &costs[i]);

	for (unsigned int i = 1; i <= b; i++)
	{
	    p[i][1] = pages[i]*costs[1];
	    for (unsigned int j = 2; j <= b-i+1; j++)
		p[i][j] = p[i][j-1] + pages[i+j-1]*costs[j];
	}
	
	for (unsigned int i = 0; i <= w; i++)
	    m[i].resize(b+1, 0);

	m[1][1] = pages[1]*costs[1];
	for (unsigned int i = 2; i <= b; i++)
	    m[1][i] = m[1][i-1] + pages[i]*costs[i];

	for (unsigned int i = 2; i <= w; i++)
	    for (unsigned int j = 1; j <= b; j++)
	    {
		m[i][j] = m[i-1][j];
		for (unsigned int k = 1; k <= j; k++)
		    if (m[i][j] > m[i-1][j-k] + p[j-k+1][k])
			m[i][j] = m[i-1][j-k] + p[j-k+1][k];
	    }

	std::printf("%llu\n", m[w][b]);
    
	return 0;
}

