import java.util.*;
public class Main {
public static void main
(String[] args
) { int[] arr = new int[]{9, 4, 20, 3, 10, 5};
int k = 33;
System.
out.
println(countSubarraysWithSum
(arr, k
)); }
public static int countSubarraysWithSum(int[] arr, int k) {
Map
<Integer, Integer
> map
= new HashMap
<>();
map.put(0, 1);
int currentSum = 0;
int count = 0;
for (int num : arr) {
currentSum += num;
if (map.containsKey(currentSum - k)) {
count += map.get(currentSum - k);
}
map.put(currentSum, map.getOrDefault(currentSum, 0) + 1);
}
return count;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludFtdIGFyciA9IG5ldyBpbnRbXXs5LCA0LCAyMCwgMywgMTAsIDV9OwogICAgICAgIGludCBrID0gMzM7CiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvdW50U3ViYXJyYXlzV2l0aFN1bShhcnIsIGspKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludCBjb3VudFN1YmFycmF5c1dpdGhTdW0oaW50W10gYXJyLCBpbnQgaykgewogICAgICAgIAogICAgICAgIE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgbWFwLnB1dCgwLCAxKTsKICAgICAgICAKICAgICAgICBpbnQgY3VycmVudFN1bSA9IDA7CiAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICAKICAgICAgICBmb3IgKGludCBudW0gOiBhcnIpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIGN1cnJlbnRTdW0gKz0gbnVtOwogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChtYXAuY29udGFpbnNLZXkoY3VycmVudFN1bSAtIGspKSB7CiAgICAgICAgICAgICAgICBjb3VudCArPSBtYXAuZ2V0KGN1cnJlbnRTdW0gLSBrKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIG1hcC5wdXQoY3VycmVudFN1bSwgbWFwLmdldE9yRGVmYXVsdChjdXJyZW50U3VtLCAwKSArIDEpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gY291bnQ7CiAgICB9Cn0K