Problem Reference: Game Of Two Stacks
Alexa has two stacks of non-negative integers, stack A and stack B where index 0 denotes the top of the stack. Alexa challenges Nick to play the following game:
- In each move, Nick can remove one integer from the top of either stack A or stack B.
- Nick keeps a running sum of the integers he removes from the two stacks.
- Nick is disqualified from the game if, at any point, his running sum becomes greater than some integer x given at the beginning of the game.
- Nick's final score is the total number of integers he has removed from the two stacks.
Given A, B, and x for g games, find the maximum possible score Nick can achieve (i.e., the maximum number of integers he can remove without being disqualified) during each game and print it on a new line.
The first line contains an integer, g (the number of games). The 3 . g subsequent lines describe each game in the following format:
- The first line contains three space-separated integers describing the respective values of n (the number of integers in stack A), m (the number of integers in stack B), and x (the number that the sum of the integers removed from the two stacks cannot exceed).
- The second line contains n space-separated integers for Stack A.
- The third line contains n space-separated integers for Stack B.
For each of the g games, print an integer on a new line denoting the maximum possible score Nick can achieve without being disqualified.
5 4 10
4 2 4 6 1
2 1 8 5
The two stacks initially look like this:
The image below depicts the integers Nick should choose to remove from the stacks. We print 4 as our answer, because that is the maximum number of integers that can be removed from the two stacks without the sum exceeding x = 10.
(There can be multiple ways to remove the integers from the stack, the image shows just one of them.)
The key point is that the order how each element is selected does not matter, which makes things complicated. But if we consider through the final result, we should know that the problem is equals to that, to choose the maximum number of elements from each stack so that them sum is no greater than x. The finally selected elements come from either both stacks, either all from one stack. So let's start with assuption that all from stack B. Then everthing time try adding one element from A, if the total sum is greater than x, then we should reduce elements we took from B until the sum is no more than x which will form a valid way of selection. Keep trying until no more elements can be taken from A or B. We just need to keep track of the maximum number of total elements selected.