5
int solve(vector<int> &v, int i, int count) {6
if (i >= v.size() || count > v.size() / 3) return 0;8
if (dp[i][count] != -1) return dp[i][count];10
int pick = v[i] + solve(v, i + 2, count + 1);11
int notPick = solve(v, i + 1, count);13
return dp[i][count] = max(pick, notPick);16
int maxSizeSlices(vector<int> &slices) {20
for (int i = 0; i < slices.size(); i++) {21
if (i != slices.size() - 1) v1.push_back(slices[i]);22
if (i != 0) v2.push_back(slices[i]);24
memset(dp, -1, sizeof(dp));25
int ans1 = solve(v1, 0, 0);26
memset(dp, -1, sizeof(dp));27
int ans2 = solve(v2, 0, 0);29
return max(ans1, ans2);