Advertisement
dark-Matter

ks-a

Mar 21st, 2021
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.60 KB | None | 0 0
  1. from sys import stdin, stdout
  2.  
  3.  
  4. R = lambda : stdin.readline().strip()
  5. RL = lambda f=None: list(map(f, R().split(' '))) if f else list(R().split(' '))
  6.  
  7. output = lambda x: stdout.write(str(x) + '\n')
  8. output_list = lambda x: output(' '.join(map(str, x)))
  9.  
  10. for tc in range(int(R())):
  11.     r, c = RL(int)
  12.     mat = []
  13.     for i in range(r):
  14.         mat.append(RL(int))
  15.     vert = [ [[0, 0] for j in range(c+1)] for i in range(r+1) ]
  16.     hor = [ [[0, 0] for j in range(c+1)] for i in range(r+1) ]
  17.     ans = 0
  18.     for i in range(1,r+1):
  19.         for j in range(1,c+1):
  20.             if mat[i-1][j-1] == 1:
  21.                 vert[i][j][0] = vert[i-1][j][0] +1
  22.                 hor[i][j][0] = hor[i][j-1][0] +1
  23.     for i in range(r, 0, -1):
  24.         for j in range(c, 0, -1):
  25.             if mat[i-1][j-1] == 1:
  26.                 vert[i-1][j][1] = vert[i][j][1] + 1
  27.                 hor[i][j-1][1] = hor[i][j][1] + 1
  28.     for i in vert:
  29.         print(*i)
  30.     print('--')
  31.     for i in hor:
  32.         print(*i)
  33.     for i in range(1, r+1):
  34.         for j in range(1, c+1):
  35.  
  36.             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)) \
  37.                 + 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) \
  38.                 + 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) \
  39.                 + 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)
  40.             ans += x
  41.             print(x, end=" ")
  42.         print()
  43.     print(ans)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement