#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> arr = {1, 2, 3, 4, 5};
int k = 5;
int n = arr.size();
unordered_map<int,int> freq;
int prefix = 0, cnt = 0;
for (int x : arr) {
prefix += x;
if (prefix == k)
cnt++;
if (freq.find(prefix - k) != freq.end())
cnt += freq[prefix - k];
freq[prefix]++;
}
cout << "no. of subarrays with sum " << k << " is " << cnt;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIHZlY3RvcjxpbnQ+IGFyciA9IHsxLCAyLCAzLCA0LCA1fTsKICAgIGludCBrID0gNTsKICAgIGludCBuID0gYXJyLnNpemUoKTsKCiAgICB1bm9yZGVyZWRfbWFwPGludCxpbnQ+IGZyZXE7ICAKICAgIGludCBwcmVmaXggPSAwLCBjbnQgPSAwOwoKICAgIGZvciAoaW50IHggOiBhcnIpIHsKICAgICAgICBwcmVmaXggKz0geDsKCiAgICAgICAKICAgICAgICBpZiAocHJlZml4ID09IGspCiAgICAgICAgICAgIGNudCsrOwoKICAgICAgIAogICAgICAgIGlmIChmcmVxLmZpbmQocHJlZml4IC0gaykgIT0gZnJlcS5lbmQoKSkKICAgICAgICAgICAgY250ICs9IGZyZXFbcHJlZml4IC0ga107CgogICAgICAgCiAgICAgICAgZnJlcVtwcmVmaXhdKys7CiAgICB9CgogICAgY291dCA8PCAibm8uIG9mIHN1YmFycmF5cyB3aXRoIHN1bSAiIDw8IGsgPDwgIiBpcyAiIDw8IGNudDsKCiAgcmV0dXJuIDA7Cn0K