#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int countSubarrays(vector<int> &arr, int k) {
unordered_map<int,int> mp;
int c=0;int cur=0;
for(int i:arr){
cur+=i;
if(cur==k) c+=1;
if(mp.find(cur-k)!=mp.end()) c+=mp[cur-k];
mp[cur]++;
}
return c;
}
int main() {
vector<int> arr = {10, 2, -2, -20, 10};
int k = -10;
cout << countSubarrays(arr, k);
return 0;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBjb3VudFN1YmFycmF5cyh2ZWN0b3I8aW50PiAmYXJyLCBpbnQgaykgewogICAgdW5vcmRlcmVkX21hcDxpbnQsaW50PiBtcDsKICAgIGludCBjPTA7aW50IGN1cj0wOwogICAgZm9yKGludCBpOmFycil7CiAgICAgICAgY3VyKz1pOwogICAgICAgIGlmKGN1cj09aykgYys9MTsKICAgICAgICBpZihtcC5maW5kKGN1ci1rKSE9bXAuZW5kKCkpIGMrPW1wW2N1ci1rXTsKICAgICAgICBtcFtjdXJdKys7CiAgICB9CiAgICByZXR1cm4gYzsKICAgIAp9CgppbnQgbWFpbigpIHsKICAgIHZlY3RvcjxpbnQ+IGFyciA9IHsxMCwgMiwgLTIsIC0yMCwgMTB9OwogICAgaW50IGsgPSAtMTA7CiAgICBjb3V0IDw8IGNvdW50U3ViYXJyYXlzKGFyciwgayk7CiAgICByZXR1cm4gMDsKfQ==