Homecoming
Contest: Codeforces Round 623 (Div. 2, based on VK Cup 2019-2020 - Elimination Round, Engine)
Difficulty rating: 1300
Tags: binary search, dp, greedy, strings

After a long party Petya decided to return home, but he turned out to be at the opposite end of the town from his home. There are $$$n$$$ crossroads in the line in the town, and there is either the bus or the tram station at each crossroad.

The crossroads are represented as a string $$$s$$$ of length $$$n$$$, where $$$s_i = \texttt{A}$$$, if there is a bus station at $$$i$$$-th crossroad, and $$$s_i = \texttt{B}$$$, if there is a tram station at $$$i$$$-th crossroad. Currently Petya is at the first crossroad (which corresponds to $$$s_1$$$) and his goal is to get to the last crossroad (which corresponds to $$$s_n$$$).

If for two crossroads $$$i$$$ and $$$j$$$ for all crossroads $$$i, i+1, \ldots, j-1$$$ there is a bus station, one can pay $$$a$$$ roubles for the bus ticket, and go from $$$i$$$-th crossroad to the $$$j$$$-th crossroad by the bus (it is not necessary to have a bus station at the $$$j$$$-th crossroad). Formally, paying $$$a$$$ roubles Petya can go from $$$i$$$ to $$$j$$$ if $$$s_t = \texttt{A}$$$ for all $$$i \le t < j$$$.

If for two crossroads $$$i$$$ and $$$j$$$ for all crossroads $$$i, i+1, \ldots, j-1$$$ there is a tram station, one can pay $$$b$$$ roubles for the tram ticket, and go from $$$i$$$-th crossroad to the $$$j$$$-th crossroad by the tram (it is not necessary to have a tram station at the $$$j$$$-th crossroad). Formally, paying $$$b$$$ roubles Petya can go from $$$i$$$ to $$$j$$$ if $$$s_t = \texttt{B}$$$ for all $$$i \le t < j$$$.

For example, if $$$s$$$="AABBBAB", $$$a=4$$$ and $$$b=3$$$ then Petya needs:

- buy one bus ticket to get from $$$1$$$ to $$$3$$$,
- buy one tram ticket to get from $$$3$$$ to $$$6$$$,
- buy one bus ticket to get from $$$6$$$ to $$$7$$$.

Thus, in total he needs to spend $$$4+3+4=11$$$ roubles. Please note that the type of the stop at the last crossroad (i.e. the character $$$s_n$$$) does not affect the final expense.

Now Petya is at the first crossroad, and he wants to get to the $$$n$$$-th crossroad. After the party he has left with $$$p$$$ roubles. He's decided to go to some station on foot, and then go to home using only public transport.

Help him to choose the closest crossroad $$$i$$$ to go on foot the first, so he has enough money to get from the $$$i$$$-th crossroad to the $$$n$$$-th, using only tram and bus tickets.

Input format:
Each test contains one or more test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 10^4$$$).

The first line of each test case consists of three integers $$$a, b, p$$$ ($$$1 \le a, b, p \le 10^5$$$) — the cost of bus ticket, the cost of tram ticket and the amount of money Petya has.

The second line of each test case consists of one string $$$s$$$, where $$$s_i = \texttt{A}$$$, if there is a bus station at $$$i$$$-th crossroad, and $$$s_i = \texttt{B}$$$, if there is a tram station at $$$i$$$-th crossroad ($$$2 \le |s| \le 10^5$$$).

It is guaranteed, that the sum of the length of strings $$$s$$$ by all test cases in one test doesn't exceed $$$10^5$$$.

Output format:
For each test case print one number — the minimal index $$$i$$$ of a crossroad Petya should go on foot. The rest of the path (i.e. from $$$i$$$ to $$$n$$$ he should use public transport).

Constraints:
Time limit: 1.0 s
Memory limit: 256.0 MB

Example input:
5
2 2 1
BB
1 1 1
AB
3 2 8
AABBBBAABB
5 3 4
BBBBB
2 1 1
ABABAB

Example output:
2
1
3
1
6

Editorial:
The first thing you should do in this problem — you should understand the problem statement (which could be not very easy), and get the right answers to the sample test cases.
Petya needs to find the minimal $$$i$$$ such that he has enough money to get from $$$i$$$ to $$$n$$$ (not $$$n+1$$$, he doesn't need to use the transport from the last crossroad. This was a rather common mistake in misunderstanding the statement) using only public transport. We can see that if Petya can get from $$$i$$$ to $$$n$$$ using only public transport, he can also get from any $$$j>i$$$ to $$$n$$$, using only public transport (because he will need fewer tickets).
Let's iterate the candidates for $$$i$$$ from $$$n$$$ to $$$1$$$ and try to find the minimal possible $$$i$$$. Of course, Petya can go from $$$n$$$ to $$$n$$$ using only public transport (he doesn't need to buy any ticket). Suppose Petya can get from $$$j$$$ to $$$n$$$ for some $$$j$$$, and it would cost him $$$t_j$$$ money. How much money he would need to get from $$$j-1$$$ to $$$n$$$? He definitely should be able to buy a ticket at station $$$j-1$$$. So, if it is the same ticket he should buy at station $$$j$$$, he will need the same amount of money, because he doesn't need to buy two consecutive equal tickets, it has no sense. Otherwise, he should buy one more ticket.
So, a minimal amount of money $$$t_{j-1}$$$ to get from $$$j-1$$$ to $$$j$$$ is $$$t_j$$$, if $$$j<n$$$ and $$$s_{j-1}=s_j$$$, and $$$t_j+cost(s_{j-1})$$$ otherwise ($$$cost(s_{j-1})$$$ is $$$a$$$ if $$$s_{j-1} = \texttt{A}$$$, and $$$b$$$ otherwise). If this value is greater than $$$p$$$, he should go to $$$j$$$ by foot, otherwise, we should resume the process because he can go to $$$j-1$$$ or even some less-numbered crossroads.