Problem p02855 (python)

Fixed submission:
import sys,itertools
def input():
    return sys.stdin.readline()[:-1]

H,W,K = map(int,input().split(' '))
l = [list(input()) for _ in range(H)]

MAP = [None]*H
for i in range(H):
    MAP[i] = [None]*W

cnt = 1
dp = []
for i in range(H):
    all_white_f = True
    flag = True
    for j in range(W):
        k = l[i][j]
        if k=='#':
            if not flag:
                cnt += 1
            all_white_f = False
            flag = False
        MAP[i][j] = str(cnt)
    if all_white_f:
        MAP[i] = None
        dp.append(i)
        cnt -= 1
    cnt += 1
pre = -1
tmp = []

if len(dp)==0:
    for i in range(H):
        print(' '.join(MAP[i]))
    exit()


if dp[0]==0:
    for i in dp:
        if i-pre==1:
            tmp.append(i)
            pre = i
        else:
            if len(tmp)!=0:
                for j in tmp:
                    first = tmp[-1]+1
                    MAP[j] = MAP[first]
                tmp = []
            MAP[i] = MAP[i-1]
    if len(tmp)!=0:
        for j in tmp:
            first = tmp[-1]+1
            MAP[j] = MAP[first]
else:
    for i in dp:
        MAP[i] = MAP[i-1]
for i in range(H):
    print(' '.join(MAP[i]))

Buggy submission (verdict: Runtime Error):
import sys,itertools
def input():
    return sys.stdin.readline()[:-1]

H,W,K = map(int,input().split(' '))
l = [list(input()) for _ in range(H)]

MAP = [None]*H
for i in range(H):
    MAP[i] = [None]*W

cnt = 1
dp = []
for i in range(H):
    all_white_f = True
    flag = True
    for j in range(W):
        k = l[i][j]
        if k=='#':
            if not flag:
                cnt += 1
            all_white_f = False
            flag = False
        MAP[i][j] = str(cnt)
    if all_white_f:
        MAP[i] = None
        dp.append(i)
        cnt -= 1
    cnt += 1
pre = -1
tmp = []
f = True
if len(dp)==0:
    for i in range(H):
        print(' '.join(MAP[i]))
    exit()
if dp[0]==0:
    for i in dp:
        if i-pre==1:
            tmp.append(i)
            pre = i
        else:
            if f:
                for j in tmp:
                    first = tmp[-1]+1
                    MAP[j] = MAP[first]
            MAP[i] = MAP[i-1]
else:
    for i in dp:
        MAP[i] = MAP[i-1]
for i in range(H):
    print(' '.join(MAP[i]))

Buggy submission (verdict: Runtime Error):
import sys
def input():
    return sys.stdin.readline()[:-1]

H,W,K = map(int,input().split(' '))
l = [list(input()) for _ in range(H)]

MAP = [None]*H
for i in range(H):
    MAP[i] = [None]*W

cnt = 1
dp = []
for i in range(H):
    all_white_f = True
    flag = True
    for j in range(W):
        k = l[i][j]
        if k=='#':
            if not flag:
                cnt += 1
            all_white_f = False
            flag = False
        MAP[i][j] = str(cnt)
    if all_white_f:
        MAP[i] = None
        dp.append(i)
        cnt -= 1
    cnt += 1
pre = -1
tmp = []
f = True
if len(dp)==0:
    print(MAP)
    exit()
if dp[0]==0:
    for i in dp:
        if i-pre==1:
            tmp.append(i)
            pre = i
        else:
            if f:
                for j in tmp:
                    first = tmp[-1]+1
                    MAP[j] = MAP[first]
            MAP[i] = MAP[i-1]
else:
    for i in dp:
        MAP[i] = MAP[i-1]
for i in range(H):
    print(' '.join(MAP[i]))