Problem p03087 (python)

Fixed submission:
n,q=map(int,input().split())
S=input()
A=[]
flag=0
cnt=0
for i in range(n):
    if S[i]=="A":
        flag=1
    elif S[i]=="C":
        if flag==1:
            cnt+=1
        flag=0
    else:
        flag=0
    A.append(cnt)
    
for i in range(q):
    l,r=map(int,input().split())
    l-=1
    r-=1
    print(A[r]-A[l])

Buggy submission (verdict: Runtime Error):
import math

n,q=map(int,input().split())
S=input()
A=[]
flag=0
for i in range(n):
    if S[i]=="A":
        flag=1
    elif S[i]=="C":
        if flag==1:
            A.append(i-1)
        flag=0
    else:
        flag=0
a=len(A)
        
for i in range(q):
    l,r=map(int,input().split())
    l-=1
    r-=1
    low=0
    high=a-1
    if A[0]>=l:
        cntl=0
    elif A[a-1]<l:
        print(0)
        continue
    else:
        while high-low>1:
            now=math.ceil((high+low)/2)
            if A[now]>=l:
                high=now
            else:
                low=now
        cntl=high
    low=0
    high=a-1
    if A[a-1]+1<=r:
        cntr=a-1
    elif A[0]+1>r:
        print(0)
        continue
    else:
        while high-low>1:
            now=(high+low)//2
            if A[now]+1<=r:
                low=now
            else:
                high=now
        cntr=low
    if cntr>=cntl:
        print(cntr-cntl+1)
    else:
        print(0)

Buggy submission (verdict: Runtime Error):
import math

n,q=map(int,input().split())
S=input()
A=[]
flag=0
for i in range(n):
    if S[i]=="A":
        flag=1
    elif S[i]=="C":
        if flag==1:
            A.append(i-1)
        flag=0
    else:
        flag=0
a=len(A)
        
for i in range(q):
    l,r=map(int,input().split())
    l-=1
    r-=1
    low=0
    high=a-1
    if A[0]>=l:
        cntl=0
    elif A[a-1]<l:
        print(0)
        continue
    else:
        while high-low>1:
            now=math.ceil((high+low)//2)
            if A[now]<=l:
                high=now
            else:
                low=now
        cntl=high
    low=0
    high=a-1
    if A[a-1]+1<=r:
        cntr=a-1
    elif A[0]+1>r:
        print(0)
        continue
    else:
        while high-low>1:
            now=(high+low)//2
            if A[now]+1<=r:
                low=now
            else:
                high=now
        cntr=low
    print(cntr-cntl+1)

Buggy submission (verdict: Runtime Error):
import math

n,q=map(int,input().split())
S=input()
A=[]
flag=0
for i in range(n):
    if S[i]=="A":
        flag=1
    elif S[i]=="C":
        if flag==1:
            A.append(i-1)
        flag=0
    else:
        flag=0
a=len(A)
print(A)
        
for i in range(q):
    l,r=map(int,input().split())
    l-=1
    r-=1
    low=0
    high=a-1
    if A[0]>=l:
        cntl=0
    elif A[a-1]<l:
        print(0)
        continue
    else:
        while high-low>1:
            now=math.ceil((high+low)//2)
            if A[now]<=l:
                high=now
            else:
                low=now
        cntl=high
    low=0
    high=a-1
    if A[a-1]+1<=r:
        cntr=a-1
    elif A[0]+1>r:
        print(0)
        continue
    else:
        while high-low>1:
            now=(high+low)//2
            if A[now]+1<=r:
                low=now
            else:
                high=now
        cntr=low
    print(cntr-cntl+1)