Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sys import stdin, stdout
- R = lambda : stdin.readline().strip()
- RL = lambda f=None: list(map(f, R().split(' '))) if f else list(R().split(' '))
- output = lambda x: stdout.write(str(x) + '\n')
- output_list = lambda x: output(' '.join(map(str, x)))
- for tc in range(int(R())):
- r, c = RL(int)
- mat = []
- for i in range(r):
- mat.append(RL(int))
- vert = [ [[0, 0] for j in range(c+1)] for i in range(r+1) ]
- hor = [ [[0, 0] for j in range(c+1)] for i in range(r+1) ]
- ans = 0
- for i in range(1,r+1):
- for j in range(1,c+1):
- if mat[i-1][j-1] == 1:
- vert[i][j][0] = vert[i-1][j][0] +1
- hor[i][j][0] = hor[i][j-1][0] +1
- for i in range(r, 0, -1):
- for j in range(c, 0, -1):
- if mat[i-1][j-1] == 1:
- vert[i-1][j][1] = vert[i][j][1] + 1
- hor[i][j-1][1] = hor[i][j][1] + 1
- for i in vert:
- print(*i)
- print('--')
- for i in hor:
- print(*i)
- for i in range(1, r+1):
- for j in range(1, c+1):
- x = max(0, min(vert[i][j][0]//2, hor[i][j][0])-1) + max(0, min(vert[i][j][0]//2, (hor[i][j][1]+1)-1)) \
- + max(0, min(vert[i][j][0], hor[i][j][0]//2)-1) + max(0, min(vert[i][j][0], (hor[i][j][1]+1)//2)-1) \
- + max(0, min((vert[i][j][1]+1)//2, hor[i][j][0])-1) + max(0,min((vert[i][j][1]+1)//2, hor[i][j][1])-1) \
- + max(0,min(vert[i][j][1]+1, hor[i][j][0]//2)-1) + max(0,min(vert[i][j][1]+1, hor[i][j][1]//2)-1)
- ans += x
- print(x, end=" ")
- print()
- print(ans)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement