I have been stuck in this problem for a couple of days now. Suppose we have $n_1$ people from group $A_1$, and $n_2$ people from group $A_2$. We want to count the number of ways to place them in a row such that a maximum of $k_1$ from group $A_1$ stand consecutively and $k_2$ from group $A_2$ stand consecutively.
The way I am trying to think about it is that if we call some one from group $A_1$ as 1, and from group $A_2$ as 2, Then we are counting the number of sequences in the form:
$1^{x_1}2^{x_2}1^{x_3}2^{x_4}...$ with $x_{2k-1} \leq k1$ and $x_{2k} \leq k2$ and also with $x_1+x_3+...=n_1$, $x_2+x_4+...=n_2$. However, I am not sure how I should go around approaching this since I don't know how many of these $x_{2k-1}$ and $x_{2k}$ exist. In other words, I don't know how many variables to solve this equation for, it could have $1$, $2$, or up to $k_1/k_2$ variables.
So after suffering with this problem for a while, I came up with this solution:
We call a bit string of length $n$ valid if it follows the rules defined in the question (i.e. less than $k_1$ $1$s in a row and less than $k_2$ $2$s in a row)
Let $A_{(i,j,b)}$ represent the number of valid bit strings with length $i+j$ where we used $i$ from the $1$s and $j$ from the $2$s in total and with the right most bit (i.e. the $i+j$ bit) being the value $b$ ($b$ is either $1$ or $2$).
Then it follows that we have this recursion relation:
$A_{i,j,1}= \sum_{k=1}^{min(i,k_1)}{(A_{(i-k,j,2)})}$ and $A_{i,j,2}= \sum_{k=1}^{min(j,k_2)}{(A_{(i,j-k,1)})}$.
With the base condition being $A_{(0,0,1)}=A_{(0,0,2)}=1$.
Now all we need to do is to compute $A_{(n1,n2,1)}+A_{(n1,n2,2)}$. I could do the recursion manually, but I thought a code would be more efficient. Here is a C++ code that I wrote to do that. I tested it on multiple test data: for example $n_1=2,n_2=3,k_1=1,k_2=2$ And I got 5 which is the correct number of bitstrings that satisfy these conditions (They are 12122, 12212, 21212, 21221, 22121). I hope this helps someone!