Problem p03014 (python)

Fixed submission:
h,w=map(int,input().split())
data=[list(input()) for i in range(h)]
yoko=[[0]*w for i in range(h)]
for i in range(h):
	j=0
	while j <w:
		if data[i][j]=='#':
			j+=1
		else:
			start=j
			while j<w-1:
				j+=1
				if data[i][j]=='#':
					for k in range(start,j):
						yoko[i][k]=j-start-1
					j+=1
					break
			else:
				j+=1
				for k in range(start,j):
					yoko[i][k]=j-start-1
				j+=1
# for i in range(h):
# 	print(yoko[i])

for j in range(w):
	i=0
	while i <h:
		if data[i][j]=='#':
			i+=1
		else:
			start=i
			while i<h-1:
				i+=1
				if data[i][j]=='#':
					for k in range(start,i):
						yoko[k][j]+=i-start-1
					i+=1
					break
			else:
				i+=1
				for k in range(start,i):
					yoko[k][j]+=i-start-1
				i+=1

# print(yoko)
for i in range(h):
	# print(yoko[i])
	yoko[i]=max(yoko[i])
print(max(yoko)+1)

Buggy submission (verdict: Runtime Error):
#!/usr/bin/env python3
import sys
input = lambda: sys.stdin.readline()[:-1]
sys.setrecursionlimit(10**8)


h,w=map(int,input().split())
s=[list(input()) for i in range(h)]
LR=[[-2]*w for i in range(h)]
L=[[-2]*w for i in range(h)]
FB=[[-2]*w for i in range(h)]
B=[[-2]*w for i in range(h)]
ans=0



for i in range(h):
    start=0
    j = 0
    while j<w:
        if s[i][j]==".":
            start=j
            f=0
            tmp=w-1
            for k in range(j+1,w):
                if s[i][k]=="#":
                    tmp=k
                    f=1
                    break
            LRsize=k-j if f else k-j+1
            goal=k if f else k+1
            for t in range(j,goal):
                LR[i][t]=LRsize
            j=tmp+1
        else:
            j+=1
        # print(j)


for j in range(w):
    start=0
    i = 0
    while i<h:
        if s[i][j]==".":
            start=i
            f=0
            tmp=h-1
            for k in range(i+1,h):
                if s[k][j]=="#":
                    f=1
                    tmp=k
                    break

            LRsize=k-i if f else k-i+1
            goal=k if f else k+1
            for t in range(i,goal):
                FB[t][j]=LRsize
            i=tmp+1
        else:
            i+=1

for i in range(h):
    for j in range(w):
        if s[i][j]==".":
            ans=max(ans,LR[i][j]+FB[i][j])
print(ans-1)

Buggy submission (verdict: Runtime Error):
#!/usr/bin/env python3
import sys
input = lambda: sys.stdin.readline()[:-1]
sys.setrecursionlimit(10**8)


h,w=map(int,input().split())
s=[list(input()) for i in range(h)]
LR=[[-2]*w for i in range(h)]
L=[[-2]*w for i in range(h)]
FB=[[-2]*w for i in range(h)]
B=[[-2]*w for i in range(h)]
ans=0



for i in range(h):
    start=0
    j = 0
    while j<w:
        if s[i][j]==".":
            start=j
            f=0
            tmp=w-1
            for k in range(j+1,w):
                if s[i][k]=="#":
                    tmp=k
                    f=1
                    break
            LRsize=k-j if f else k-j+1
            goal=k if f else k+1
            for t in range(j,goal):
                LR[i][t]=LRsize
            j=tmp+1
        else:
            j+=1
        # print(j)


for j in range(w):
    start=0
    i = 0
    while i<h:
        if s[i][j]==".":
            start=i
            f=0
            tmp=h-1
            for k in range(i+1,h):
                if s[k][j]=="#":
                    f=1
                    tmp=k
                    break

            LRsize=k-i if f else k-i+1
            goal=k if f else k+1
            for t in range(i,goal):
                FB[t][j]=LRsize
            i=tmp+1
        else:
            i+=1

for i in range(h):
    for j in range(w):
        if s[i][j]==".":
            ans=max(ans,LR[i][j]+FB[i][j])
print(ans-1)

Buggy submission (verdict: Runtime Error):
#!/usr/bin/env python3
import sys
input = lambda: sys.stdin.readline()[:-1]
sys.setrecursionlimit(10**8)

def find(LI,i,j,p):
    data=[(0,1),(0,-1),(1,0),(-1,0)]
    if not (0<=i<h and 0<=j<w):
        LI[i][j]=-1
        return LI[i][j]

    if s[i][j]=="#":
        LI[i][j] = -1
        return LI[i][j]
        
    if LI[i][j]!=-2:
        return LI[i][j]
    else:
        LI[i][j]= find(LI, i+data[p][0], j+data[p][1], p)+1
        return LI[i][j]
    

h,w=map(int,input().split())
s=[list(input()) for i in range(h)]
R=[[-2]*w for i in range(h)]
L=[[-2]*w for i in range(h)]
F=[[-2]*w for i in range(h)]
B=[[-2]*w for i in range(h)]
ans=0
for i in range(h):
    for j in range(w):
        find(R,i,j,0)
        find(L,i,j,1)
        find(F,i,j,2)
        find(B,i,j,3)
        if s[i][j]!="#":
            ans = max(ans, sum((R[i][j], L[i][j], F[i][j], B[i][j]))+1)
print(ans)