Problem p03054 (python)

Fixed submission:
H, W, N = tuple(map(int, input().split()))
r, c = tuple(map(int, input().split()))
r-=1
c-=1
Ta = input()
Ao = input()
L, R, U, D = -1, W, -1, H
for idx, (t, a) in enumerate(zip(reversed(Ta), reversed(Ao))):
    if idx != 0:
        if(a == "R"):
            L = max(L-1,-1)
        elif(a == "L"):
            R = min(R+1,W)
        elif(a == "U"):
            D = min(D+1,H)
        else:
            U = max(U-1,-1)
            
    #print("A{} L{} c{} R{} U{} r{} D{}".format(a,L,c,R,U,r,D))
    if(t == "R"):
        R = max(R-1,-1)
    elif(t == "L"):
        L = min(L+1,W)
    elif(t == "U"):
        U = min(U+1,H)
    else:
        D = max(D-1,-1)
    #print("T{} L{} c{} R{} U{} r{} D{}".format(t,L,c,R,U,r,D))
    if (R-L-1)*(D-U-1) <= 0:
        print("NO")
        quit()
print("YES" if L < c < R and U < r < D else "NO")

Buggy submission (verdict: Runtime Error):
H,W,N = tuple(map(int,input().split()))

r,c = tuple(map(int,input().split()))

Ta = input()
Ao = input()

def convert(ch):
    if ch=="R":
        return (0,1)
    elif ch=="L":
        return (0,-1)
    elif ch=="U":
        return (1,0)
    else:
        return (-1,0)
# 青木くんのターンになったらやばいマップを逆方向に1動かして重ねた部分がやばくなる
import numpy as np
yabaiMap = np.zeros((H+2,W+2))
yabaiMap[1:-1,1:-1] = np.ones((H,W))

for idx,(t,a) in enumerate(zip(reversed(Ta),reversed(Ao))):
    if idx != 0:
        
        dy,dx = convert(a)
        # 動かした方向にやばくない場所があれば復帰する
        # つまり フィルタをかけてしまえばいいので，元の場所が0かつ動かした先が1であればよい，その場所を1にする
        yabaiMap[1:-1,1:-1] += (1-yabaiMap)[1:-1,1:-1] * yabaiMap[1+dy:H+1+dy,1+dx:W+1+dx]
        #print("A",a,yabaiMap)
    dy,dx = convert(t)
    yabaiMap[1:-1,1:-1] *= yabaiMap[1+dy:H+1+dy,1+dx:W+1+dx]
    if np.sum(yabaiMap) == 0:
        print("NO")
        quit()
print("YES" if yabaiMap[r,c] ==1 else "NO")

Buggy submission (verdict: Runtime Error):
H,W,N = tuple(map(int,input().split()))

r,c = tuple(map(int,input().split()))

Ta = input()
Ao = input()

def convert(ch):
    if ch=="R":
        return (0,1)
    elif ch=="L":
        return (0,-1)
    elif ch=="U":
        return (1,0)
    else:
        return (-1,0)
# 青木くんのターンになったらやばいマップを逆方向に1動かして重ねた部分がやばくなる
import numpy as np
yabaiMap = np.zeros((H+2,W+2))
yabaiMap[1:-1,1:-1] = np.ones((H,W))

for idx,(t,a) in enumerate(zip(reversed(Ta),reversed(Ao))):
    if idx != 0:
        
        dy,dx = convert(a)
        # 動かした方向にやばくない場所があれば復帰する
        # つまり フィルタをかけてしまえばいいので，元の場所が0かつ動かした先が1であればよい，その場所を1にする
        yabaiMap[1:-1,1:-1] += (1-yabaiMap)[1:-1,1:-1] * yabaiMap[1+dy:H+1+dy,1+dx:W+1+dx]
        #print("A",a,yabaiMap)
    dy,dx = convert(t)
    yabaiMap[1:-1,1:-1] *= yabaiMap[1+dy:H+1+dy,1+dx:W+1+dx]
    
	if np.sum(yabaiMap) == 0:
        print("NO")
        quit()
print("YES" if yabaiMap[r,c] ==1 else "NO")

Buggy submission (verdict: Runtime Error):
H,W,N = tuple(map(int,input().split()))

r,c = tuple(map(int,input().split()))

Ta = input()
Ao = input()

def convert(ch):
    if ch=="R":
        return (0,1)
    elif ch=="L":
        return (0,-1)
    elif ch=="U":
        return (1,0)
    else:
        return (-1,0)
# 青木くんのターンになったらやばいマップを逆方向に1動かして重ねた部分がやばくなる
import numpy as np
yabaiMap = np.zeros((H+2,W+2))
yabaiMap[1:-1,1:-1] = np.ones((H,W))

for idx,(t,a) in enumerate(zip(reversed(Ta),reversed(Ao))):
    if idx != 0:
        
        dy,dx = convert(a)
        # 動かした方向にやばくない場所があれば復帰する
        # つまり フィルタをかけてしまえばいいので，元の場所が0かつ動かした先が1であればよい，その場所を1にする
        yabaiMap[1:-1,1:-1] += (1-yabaiMap)[1:-1,1:-1] * yabaiMap[1+dy:H+1+dy,1+dx:W+1+dx]
        #print("A",a,yabaiMap)
    dy,dx = convert(t)
    yabaiMap[1:-1,1:-1] *= yabaiMap[1+dy:H+1+dy,1+dx:W+1+dx]
    
    #print("T",t,yabaiMap)
print("YES" if yabaiMap[r,c] ==1 else "NO")