using
System;
using
System.Linq;
public
class
GFG {
static
int
[, , ] dp =
new
int
[501, 101, 101];
static
int
Solve(
int
i,
int
j,
int
k,
int
[] A,
int
[] B,
int
N)
{
if
(i <= 0) {
return
0;
}
if
(dp[i, j, k] != -1) {
return
dp[i, j, k];
}
int
ans = (
int
)1e9;
if
(j != N) {
ans = Math.Min(
ans,
Solve(i - A[j], j + 1, k, A, B, N) + 1);
}
if
(k != N) {
ans = Math.Min(
ans,
Solve(i - B[k], j, k + 1, A, B, N) + 1);
}
return
dp[i, j, k] = ans;
}
static
int
MinOperations(
int
[] A,
int
[] B,
int
N,
int
M)
{
for
(
int
i = 0; i < dp.GetLength(0); i++) {
for
(
int
j = 0; j < dp.GetLength(1); j++) {
for
(
int
k = 0; k < dp.GetLength(2); k++) {
dp[i, j, k] = -1;
}
}
}
int
ans = Solve(M, 0, 0, A, B, N);
return
ans;
}
static
public
void
Main()
{
int
[] A = { 1, 9, 1, 4, 0, 1 },
B = { 3, 2, 1, 5, 9, 10 };
int
N = A.Length;
int
M = 12;
Console.WriteLine(MinOperations(A, B, N, M));
int
[] A1 = { 0, 1, 2, 3, 5 }, B1
= { 5, 0, 0, 0, 9 };
int
N1 = A1.Length;
int
M1 = 6;
Console.WriteLine(MinOperations(A1, B1, N1, M1));
}
}