int taste[1004][1004], dp[1004][1004] = { 0 }; int a[1004], b[1004]; int main() { int n, m; scanf("%d%d", &n, &m); for (int i = 1; i <= n; ++i) scanf("%d", a + i); for (int i = 1; i <= m; ++i) scanf("%d", b + i); for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) { taste[i][j] = a[i] * b[j]; int temp = taste[i][j]; if (taste[i][j] < 0) temp = 0; dp[i][j] = dp[i - 1][j - 1] + temp; if (dp[i][j] < dp[i - 1][j]) dp[i][j] = dp[i - 1][j]; if (dp[i][j] < dp[i][j - 1]) dp[i][j] = dp[i][j - 1]; } printf("%d\n", dp[n][m]); return 0; }