using
System;
class
MainClass {
static
int
Maximum(
int
A,
int
B,
int
C,
int
D)
{
return
Math.Max(Math.Max(A, B), Math.Max(C, D));
}
static
int
MaxProduct(
int
[] A,
int
N,
int
[] B,
int
M)
{
int
[, ] dp =
new
int
[N, M];
dp[0, 0] = A[0] * B[0];
for
(
int
j = 1; j < M; j++) {
dp[0, j] = Math.Max(A[0] * B[j], dp[0, j - 1]);
}
for
(
int
i = 1; i < N; i++) {
dp[i, 0] = Math.Max(A[i] * B[0], dp[i - 1, 0]);
}
for
(
int
i = 1; i < N; i++) {
for
(
int
j = 1; j < M; j++) {
dp[i, j] = Maximum(
A[i] * B[j] + dp[i - 1, j - 1],
A[i] * B[j], dp[i - 1, j],
dp[i, j - 1]);
}
}
return
dp[N - 1, M - 1];
}
public
static
void
Main(
string
[] args)
{
int
[] a = { -2, 6, -2, -5 };
int
[] b = { -3, 4, -2, 8 };
int
n = a.Length;
int
m = b.Length;
Console.WriteLine(MaxProduct(a, n, b, m));
}
}