Code

class Solution {
public:
    int maximizeSquareHoleArea(int n, int m, vector<int>& hBars, vector<int>& vBars) {

        sort(hBars.begin(), hBars.end());
        sort(vBars.begin(), vBars.end());

        // Get the min(max_consec_hor, max_consec_ver)
        hBars.push_back(0);
        vBars.push_back(0);
        int prev = 0, consec = 1, max_on_hor = 1, max_on_ver = 1;
        for (int i=0; i<hBars.size(); i++) {
            if (prev + 1 == hBars[i]) {
                consec++;
            }else{
                max_on_hor = max(max_on_hor, consec);
                consec = 1;
            }
            prev = hBars[i];
        }
        prev = 0;
        consec = 1;
        for (int i=0; i<vBars.size(); i++) {
            if (prev + 1 == vBars[i]) {
                consec++;
            }else{
                max_on_ver = max(max_on_ver, consec);
                consec = 1;
            }
            prev = vBars[i];
        }

        return pow(min(max_on_hor, max_on_ver)+1, 2);
    }
};