m[0]=-1;//beacuse a subarray sum may be equal to k so in map we does not have sum store with 0(zero value) so we need to store it so store it -1 (because when we calculte the distance we get correct distance using -1 value) )
for(int i=0;i<num;i++){
sum+=A[i];
int x=sum-k;
if(m.find(x)!=m.end()){
int dist=m[x]+1;
int actual=i-dist+1;
if(actual<mini){
mini=actual;
count=1;
}
elseif(actual==mini){
count++;
}
}
if(m.find(sum)==m.end()){
m[sum]=i;
}
}
return count;
}
int main(){
// your code goes here
int n;
cin>>n;
int k;
cin>>k;
int A[n];
for(int i=0;i<n;i++){
cin>>A[i];
}
cout<<"The count of subarrays with smallest length whose sum==k is:"<<count(A,n,k);