import java.util.*;
//https://docs.google.com/document/d/1A-D63VjskOCGUV_mZmQg1lLX2zDf7Z04y5Nu7SJM5WA/edit?tab=t.0
public class Main {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in);
// Read input values
System.
out.
println("Enter the size of the array (N):"); int N = scanner.nextInt();
int[] nums = new int[N];
System.
out.
println("Enter the elements of the array:"); for (int i = 0; i < N; i++) {
nums[i] = scanner.nextInt();
}
System.
out.
println("Enter the value of D:"); int D = scanner.nextInt();
System.
out.
println("Enter the value of M:"); int M = scanner.nextInt();
// Calculate the number of subarrays
int result = countSubarraysWithD(nums, D, M);
System.
out.
println("Number of subarrays: " + result
); }
public static int countSubarraysWithD(int[] nums, int d, int m) {
int n = nums.length;
Map
<Integer, Integer
> map
= new HashMap
<>(); map.put(0,1);
int count = 0;
int subArray = 0;
for(int i=0;i<n;i++){
if(nums[i]==d) count++;
int z = count - m;
if(map.containsKey(z)){
subArray+=map.get(z);
}
map.put(count, map.getOrDefault(count, 0)+1);
}
return subArray;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwovL2h0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMUEtRDYzVmpza09DR1VWX21abVFnMWxMWDJ6RGY3WjA0eTVOdTdTSk01V0EvZWRpdD90YWI9dC4wCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBTY2FubmVyIHNjYW5uZXIgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoKICAgICAgICAvLyBSZWFkIGlucHV0IHZhbHVlcwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRW50ZXIgdGhlIHNpemUgb2YgdGhlIGFycmF5IChOKToiKTsKICAgICAgICBpbnQgTiA9IHNjYW5uZXIubmV4dEludCgpOwoKICAgICAgICBpbnRbXSBudW1zID0gbmV3IGludFtOXTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGVyIHRoZSBlbGVtZW50cyBvZiB0aGUgYXJyYXk6Iik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgICAgICAgbnVtc1tpXSA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgIH0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbnRlciB0aGUgdmFsdWUgb2YgRDoiKTsKICAgICAgICBpbnQgRCA9IHNjYW5uZXIubmV4dEludCgpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGVyIHRoZSB2YWx1ZSBvZiBNOiIpOwogICAgICAgIGludCBNID0gc2Nhbm5lci5uZXh0SW50KCk7CgogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHN1YmFycmF5cwogICAgICAgIGludCByZXN1bHQgPSBjb3VudFN1YmFycmF5c1dpdGhEKG51bXMsIEQsIE0pOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTnVtYmVyIG9mIHN1YmFycmF5czogIiArIHJlc3VsdCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgY291bnRTdWJhcnJheXNXaXRoRChpbnRbXSBudW1zLCBpbnQgZCwgaW50IG0pIHsKICAgICAgICBpbnQgbiA9IG51bXMubGVuZ3RoOwogICAgICAgIE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CgkJbWFwLnB1dCgwLDEpOwoJCWludCBjb3VudCA9IDA7CgkJaW50IHN1YkFycmF5ID0gMDsKCQlmb3IoaW50IGk9MDtpPG47aSsrKXsKCQkJaWYobnVtc1tpXT09ZCkgY291bnQrKzsKCQkJaW50IHogPSBjb3VudCAtIG07CgkJCWlmKG1hcC5jb250YWluc0tleSh6KSl7CgkJCQlzdWJBcnJheSs9bWFwLmdldCh6KTsKCQkJfQoJCQltYXAucHV0KGNvdW50LCBtYXAuZ2V0T3JEZWZhdWx0KGNvdW50LCAwKSsxKTsKCQl9CiAgICAgICAgcmV0dXJuIHN1YkFycmF5OwogICAgfQp9Cg==