실크로드

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

과거 카자흐스탄에는 실크로드라는 교역로가 있었다.

실크로드에는 도시가 N+1N + 1개 있고, 서쪽부터 차례로 도시 00, 도시 11, ..., 도시 NN이다. 도시 i1i - 1과 도시 ii (1iN1 \le i \le N) 사이의 거리는 DiD_i이다.

무역상 JOI는 도시 00에서 출발해 서쪽에서 동쪽으로 도시를 차례로 지나 도시 NN까지 가야 한다. 이 이동을 MM일 안에 끝내야 한다. JOI는 하루마다 다음 두 가지 중 하나를 고른다.

  • 이동: 하루를 써서 바로 동쪽 도시로 간다. 지금 도시 i1i - 1 (1iN1 \le i \le N)에 있으면 도시 ii에 도착한다.
  • 대기: 이동하지 않고 지금 도시에서 하루를 보낸다.

이동하는 날에는 피로도가 쌓인다. jj일째 (1jM1 \le j \le M) 날씨의 나쁜 정도는 CjC_j이고, 도시 i1i - 1에서 도시 iijj일째에 이동하면 피로도가 Di×CjD_i \times C_j만큼 쌓인다. 대기하는 날에는 피로도가 쌓이지 않는다.

JOI가 MM일 안에 도시 NN에 도착할 때 쌓이는 피로도 총합의 최솟값을 구하라.

입력

첫째 줄에 정수 NN, MM (1NM10001 \le N \le M \le 1000)이 공백으로 구분되어 주어진다. 실크로드에 도시가 N+1N + 1개 있고, JOI가 도시 00에서 도시 NN까지 MM일 안에 가야 한다는 뜻이다.

다음 NN개 줄 중 ii번째 줄에는 정수 DiD_i (1Di10001 \le D_i \le 1000)가 주어진다. 도시 i1i - 1과 도시 ii 사이의 거리다.

다음 MM개 줄 중 jj번째 줄에는 정수 CjC_j (1Cj10001 \le C_j \le 1000)가 주어진다. jj일째 날씨의 나쁜 정도다.

출력

JOI가 MM일 안에 도시 NN에 도착할 때 쌓이는 피로도 총합의 최솟값을 한 줄에 출력한다.

힌트

첫 번째 예제에서 피로도 총합을 최소로 만드는 방법은 다음과 같다.

  • 1일째: 대기한다.
  • 2일째: 도시 00에서 도시 11로 이동한다. 쌓이는 피로도는 10×30=30010 \times 30 = 300이다.
  • 3일째: 도시 11에서 도시 22로 이동한다. 쌓이는 피로도는 25×15=37525 \times 15 = 375이다.
  • 4일째: 대기한다.
  • 5일째: 도시 22에서 도시 33으로 이동한다. 쌓이는 피로도는 15×30=45015 \times 30 = 450이다.

이때 피로도 총합은 300+375+450=1125300 + 375 + 450 = 1125이고, 이보다 작게 만들 수는 없다.