@anon55659401 please help

3 Likes

I am too waiting for all submissions to become public.If anyone solved it,please post the solution here.

dp1[n] and dp2[n] are two dp-arrays.

for(i=3;i<=n-1;i++)

{

dp1[i]=max(a1[i]+dp2[i-1],a1[i]+a1[i-1]+dp2[i-2],a1[i]+a1[i-1]+a1[i-2]+dp2[i-3]);

dp2[i]=max(a2[i]+dp1[i-1],a2[i]+a2[i-1]+dp1[i-2],a2[i]+a2[i-1]+a2[i-2]+dp1[i-3]);

}

cout<<max(dp1[n-1],dp2[n-1]) ;

4 Likes

My idea was simple and recursive.

the state is (i, a, b)

where i is the index and a is how many consecutive can you take from first array from this index

and b is how many consecutive can you take from second array from this index

call with (0,3,3)

write recursion with memoization. done.

1 Like