int countSubarrays(vector<int> &arr, int k) {
// code here
unordered_map<int, int> map;
int count = 0, sum = 0;
for(int i=0; i<arr.size(); i++) {
sum+= arr[i];
if(sum==k) count++;
if(map.find(sum-k) != map.end()) count+=map[sum-k];
map[sum]++;
}
return count;
}