class Solution: def orderOfLargestPlusSign(self, n: int, mines: List[List[int]]) -> int: banned={tuple(mine) for mine in mines} dp=[[[0,0,0,0,0] for _ in range(n)] for __ in range(n)] #[l,u,r,d,maximum] for i in range(n): for j in range(n): x,y=n-i-1,n-j-1 if (i,j) in banned: dp[i][j]=[0,0,0,0,0] else: if j==0: dp[i][j][0]=1 else: dp[i][j][0]=dp[i][j-1][0]+1 if i==0: dp[i][j][1]=1 else: dp[i][j][1]=dp[i-1][j][1]+1 if (x,y) in banned: dp[x][y]=[0,0,0,0,0] else: if y==n-1: dp[x][y][2]=1 else: dp[x][y][2]=dp[x][y+1][2]+1 if x==n-1: dp[x][y][3]=1 else: dp[x][y][3]=dp[x+1][y][3]+1 ans=0 for i in range(n): for j in range(n): dp[i][j][4]=min(dp[i][j][:-1]) ans=max([dp[i][j][4],ans]) return ans