/* package whatever; // don't place package name! */
/*
3 3
1 2 3
output
2
*/
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Scanner sc
= new Scanner
(System.
in); int n=sc.nextInt();
int k=sc.nextInt();
int nums[] = new int[n];
for(int i=0; i<n; i++){
nums[i]=sc.nextInt();
}
int res = subarraySumBrureForce2(nums,k);
}
//lead to optimal solution
public static int subarraySumBrureForce2(int[] nums, int k) {
// make a prefix arry
int psum =0,cnt=0;
int prefix[] = new int[nums.length+1];
prefix[0] = 0;
for(int i=1 ; i<=nums.length;i++){
prefix[i] =prefix[i-1]+ nums[i-1];
}
for(int i=1 ; i<prefix.length;i++){
int val = prefix[i] - k;
for(int j=0;j<i;j++){
if(val == prefix[j]){
cnt++;
}
}
}
return cnt;
}
public static int subarraySum(int[] nums, int k) {
// make a prefix arry
int psum =0,cnt=0;
HashMap
<Integer,Integer
> map
=new HashMap
<>(); map.put(0,1);
for(int i=0 ; i<nums.length;i++){
psum+=nums[i];
if(map.containsKey(psum - k)){
cnt+=map.get(psum - k);
}
map.put(psum,map.getOrDefault(psum,0)+1);
}
return cnt;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKLyogCjMgMwoxIDIgMwpvdXRwdXQKMgoKCiovCgppbXBvcnQgamF2YS51dGlsLio7CmltcG9ydCBqYXZhLmxhbmcuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJCgkJU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CgkJaW50IG49c2MubmV4dEludCgpOwoJCWludCBrPXNjLm5leHRJbnQoKTsKCQlpbnQgbnVtc1tdID0gbmV3IGludFtuXTsKCQlmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJCQludW1zW2ldPXNjLm5leHRJbnQoKTsKCQl9CiAKCQlpbnQgcmVzID0gc3ViYXJyYXlTdW1CcnVyZUZvcmNlMihudW1zLGspOwoJCVN5c3RlbS5vdXQucHJpbnRsbihyZXMpOwoJCgl9CgkKCS8vbGVhZCB0byBvcHRpbWFsIHNvbHV0aW9uCglwdWJsaWMgc3RhdGljIGludCBzdWJhcnJheVN1bUJydXJlRm9yY2UyKGludFtdIG51bXMsIGludCBrKSB7CiAgICAgICAgLy8gbWFrZSBhIHByZWZpeCBhcnJ5CiAgICAgICAgaW50IHBzdW0gPTAsY250PTA7CiAgICAgICAgaW50IHByZWZpeFtdID0gbmV3IGludFtudW1zLmxlbmd0aCsxXTsKICAgICAgICBwcmVmaXhbMF0gPSAwOwogICAgICAgIGZvcihpbnQgaT0xIDsgaTw9bnVtcy5sZW5ndGg7aSsrKXsKICAgICAgICAgICBwcmVmaXhbaV0gPXByZWZpeFtpLTFdKyBudW1zW2ktMV07CiAgICAgICAgfSAKICAgICAgICAKICAgICAgICBmb3IoaW50IGk9MSA7IGk8cHJlZml4Lmxlbmd0aDtpKyspewogICAgICAgICAgaW50IHZhbCA9IHByZWZpeFtpXSAtIGs7CiAgICAgICAgICBmb3IoaW50IGo9MDtqPGk7aisrKXsKICAgICAgICAgIAlpZih2YWwgPT0gcHJlZml4W2pdKXsKICAgICAgICAgIAkJY250Kys7CiAgICAgICAgICAJfQogICAgICAgICAgfQogICAgICAgIH0gCiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEFycmF5cy50b1N0cmluZyhwcmVmaXgpKTsKICAgICAgICAKICAgICAgICByZXR1cm4gY250OwogICAgfQoJCglwdWJsaWMgc3RhdGljIGludCBzdWJhcnJheVN1bShpbnRbXSBudW1zLCBpbnQgaykgewogICAgICAgIC8vIG1ha2UgYSBwcmVmaXggYXJyeQogICAgICAgIGludCBwc3VtID0wLGNudD0wOwogICAgICAgIEhhc2hNYXA8SW50ZWdlcixJbnRlZ2VyPiBtYXAgPW5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBtYXAucHV0KDAsMSk7CiAgICAgICAgZm9yKGludCBpPTAgOyBpPG51bXMubGVuZ3RoO2krKyl7CiAgICAgICAgICAgIHBzdW0rPW51bXNbaV07CiAgICAgICAgICAgIGlmKG1hcC5jb250YWluc0tleShwc3VtIC0gaykpewogICAgICAgICAgICAgICAgY250Kz1tYXAuZ2V0KHBzdW0gLSBrKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBtYXAucHV0KHBzdW0sbWFwLmdldE9yRGVmYXVsdChwc3VtLDApKzEpOwogICAgICAgIH0gCgoKICAgICAgICByZXR1cm4gY250OwogICAgfQp9