Problem:
 Score : 600 points    Problem Statement Let us consider the following operations on a string consisting of A and B :   Select a character in a string. If it is A , replace it with BB . If it is B , replace with AA .  Select a substring that is equal to either AAA or BBB , and delete it from the string.   For example, if the first operation is performed on ABA and the first character is selected, the string becomes BBBA .
If the second operation is performed on BBBAAAA and the fourth through sixth characters are selected, the string becomes BBBA .  These operations can be performed any number of times, in any order.  You are given two string S and T , and q queries a_i, b_i, c_i, d_i .
For each query, determine whether S_{a_i} S_{{a_i}+1} ... S_{b_i} , a substring of S , can be made into T_{c_i} T_{{c_i}+1} ... T_{d_i} , a substring of T .      Constraints  1 \leq |S|, |T| \leq 10^5  S and T consist of letters A and B .  1 \leq q \leq 10^5  1 \leq a_i \leq b_i \leq |S|  1 \leq c_i \leq d_i \leq |T|         Input Input is given from Standard Input in the following format:  S  T  q  a_1  b_1  c_1  d_1  ...  a_q  b_q  c_q  d_q       Output Print q lines. The i -th line should contain the response to the i -th query. If S_{a_i} S_{{a_i}+1} ... S_{b_i} can be made into T_{c_i} T_{{c_i}+1} ... T_{d_i} , print YES . Otherwise, print NO .        Sample Input 1 BBBAAAABA
BBBBA
4
7 9 2 5
7 9 1 4
1 7 2 5
1 7 2 4      Sample Output 1 YES
NO
YES
NO  The first query asks whether the string ABA can be made into BBBA .
As explained in the problem statement, it can be done by the first operation.  The second query asks whether ABA can be made into BBBB , and the fourth query asks whether BBBAAAA can be made into BBB .
Neither is possible.  The third query asks whether the string BBBAAAA can be made into BBBA .
As explained in the problem statement, it can be done by the second operation.       Sample Input 2 AAAAABBBBAAABBBBAAAA
BBBBAAABBBBBBAAAAABB
10
2 15 2 13
2 13 6 16
1 13 2 20
4 20 3 20
1 18 9 19
2 14 1 11
3 20 3 15
6 16 1 17
4 18 8 20
7 20 3 14      Sample Output 2 YES
YES
YES
YES
YES
YES
NO
NO
NO
NO

Solution (Python):
S = input()
T = input()


def pre_(X):
    d= dict()
    d[0]=0
    tmp = 0
    for i,s in enumerate(X):
        if s=="A":
           tmp +=1
        else:
            tmp+=2
        d[i+1]=tmp
    return d

Sx = pre_(S)
Tx = pre_(T)


for a,b,c,d in [list(map(int,input().split())) for _ in range(int(input()))]:
    """
    print(Sx[a-1])
    print(Sx[b])
    print(Tx[c-1])
    print(Tx[d])
    """
    print( "YES" if (((Sx[a-1]-Sx[b])- (Tx[c-1]-Tx[d]))%3==0) else "NO")

Solution (Python):
import numpy as np
S = input()
T = input()
SA = np.array([0]+[s == 'A' for s in S]).cumsum()
SB = np.array([0]+[s == 'B' for s in S]).cumsum()
TA = np.array([0]+[s == 'A' for s in T]).cumsum()
TB = np.array([0]+[s == 'B' for s in T]).cumsum()

q = int(input())
res_list = []

for _ in range(q):
    a, b, c, d = map(int, input().split())
    a_cnt = ((SA[b] - SA[a-1]) - (TA[d] - TA[c-1])) % 3
    b_cnt = ((SB[b] - SB[a-1]) - (TB[d] - TB[c-1])) % 3
    if a_cnt == b_cnt:
        res_list.append('YES')
    else:
        res_list.append('NO')
    
for i in range(q):
    print(res_list[i])

Solution (Python):
S = raw_input()
T = raw_input()
s = [0]*(len(S)+1)
for i in range(len(S)):
    s[i+1] = s[i] + (-1 if S[i]=="A" else 1)
t = [0]*(len(T)+1)
for i in range(len(T)):
    t[i+1] = t[i] + (-1 if T[i]=="A" else 1)
q = input()
for _ in range(q):
    a, b, c, d = map(int, raw_input().split())
    print "YES" if (s[b]-s[a-1])%3==(t[d]-t[c-1])%3 else "NO"