#include <bits/stdc++.h>
using
namespace
std;
int
dp[1001][101][101];
int
rec(
int
level,
int
x,
int
y,
int
arr1[],
int
arr2[],
int
n)
{
if
(level == n)
return
0;
if
(x == 0 && y == 0)
return
0;
if
(x == 0)
return
arr2[level]
+ rec(level + 1, x, y - 1, arr1, arr2, n);
if
(y == 0)
return
arr1[level]
+ rec(level + 1, x - 1, y, arr1, arr2, n);
if
(dp[level][x][y] != -1)
return
dp[level][x][y];
int
ans = max(rec(level + 1, x - 1, y, arr1, arr2, n)
+ arr1[level],
rec(level + 1, x, y - 1, arr1, arr2, n)
+ arr2[level]);
return
dp[level][x][y] = ans;
}
void
solve()
{
int
n = 7, x = 3, y = 4;
int
arr1[] = { 8, 7, 15, 19, 16, 16, 18 },
arr2[] = { 1, 7, 15, 11, 12, 31, 9 };
memset
(dp, -1,
sizeof
(dp));
cout << rec(0, x, y, arr1, arr2, n);
}
int
main()
{
solve();
return
0;
}