int maxLen(vector<int> &arr) {
// Your code here
int res=0, sum=0;
unordered_map<int, int> mp;
for(int i=0; i<arr.size(); i++) {
sum += (arr[i] == 0) ? -1 : 1;
if(sum == 0) res = max(res, i+1);
else if(mp.find(sum) != mp.end()) res = max(res, i-mp[sum]);
else mp[sum] = i;
}
return res;
}