Easy C++ Solution
\nclass Solution {\npublic:\n    \n    int minimum (int a, int b, int c, int d) {\n       // cout << a << " " << b << " " << c << " " << d << endl;\n        int
```\nclass Solution {\npublic:\n    \n    int minimum (int a, int b, int c, int d) {\n       // cout << a << " " << b << " " << c << " " << d << endl;\n        int ans = min(a,b);\n        ans = min(ans, c);\n        ans = min(ans, d);\n        return ans;\n    }\n    \n    int orderOfLargestPlusSign(int n, vector<vector<int>>& mines) {\n        vector<vector<int>> grid(n, vector<int> (n, 1));\n        vector<vector<int>> left(n, vector<int> (n, 0));\n        vector<vector<int>> right(n, vector<int> (n, 0));\n        vector<vector<int>> up(n, vector<int> (n, 0));\n        vector<vector<int>> down(n, vector<int> (n, 0));\n        bool seen = false;\n        \n        for (auto m : mines) {\n            int x = m[0];\n            int y = m[1];\n            grid[x][y] = 0;\n        }\n        \n        for (int i = 0; i < n; i++) {\n            for (int j = 0; j < n; j++) {\n                if (grid[i][j]) {\n                    seen = true;\n                    if (i == 0) up[i][j] = 1;\n                    else up[i][j] = 1+up[i-1][j];\n                }\n            }\n        }\n        \n        for (int i = n-1; i >= 0; i--) {\n             for (int j = 0; j < n; j++) {\n                if (grid[i][j]) {\n                    seen = true;\n                    if (i == n-1) down[i][j] = 1;\n                    else down[i][j] = 1+down[i+1][j];\n                }\n            }\n        }\n        \n        for (int j = 0; j < n; j++) {\n            for (int i = 0; i < n; i++) {\n                if (grid[i][j]) {\n                    if (j == 0) left[i][j] = 1;\n                    else left[i][j] = 1+left[i][j-1];\n                }\n            }\n        }\n        \n        for (int j = n-1; j >= 0; j--) {\n            for (int i = 0; i < n; i++) {\n                if (grid[i][j]) {\n                    seen = true;\n                    if (j == n-1) right[i][j] = 1;\n                    else right[i][j] = 1+right[i][j+1];\n                }\n            }\n        }\n        \n        int ans = 0;\n        for (int i = 0; i < n; i++) {\n            for (int j = 0; j < n; j++) {\n                //if (grid[i][j]) {\n                    ans = max(ans, minimum(up[i][j], left[i][j], right[i][j], down[i][j]));\n                //}\n            }\n        }\n        \n        if (ans == 0 && seen) ans = 1;\n        \n        return ans;\n    }\n};\n```
['Dynamic Programming']