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);
}
};