fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int main() {
  6. int n,k; cin>>n>>k;
  7. vector<int>arr(n);
  8. for(int i =0 ; i<n;i++){
  9. cin>>arr[i];
  10. }
  11. unordered_map<int,int>hash;
  12. int sum =0 ;
  13. int count=0 ;
  14. int minlength = INT_MAX ;
  15.  
  16. for(int i =0 ; i<n;i++){
  17.  
  18. sum+=arr[i];
  19. if(sum==k){
  20. int length=i+1;
  21. if(length<minlength){
  22. minlength = length;
  23. count= 1 ;
  24. }
  25. else if (length == minlength){
  26. count++;
  27. }
  28.  
  29. }
  30. else{
  31. int comp= sum-k;
  32. if(hash.find(comp)!=hash.end()) {
  33. int j = hash[comp];
  34. int length=i-j;
  35. if(length<minlength){
  36. minlength = length;
  37. count= 1 ;
  38. }
  39. else if (length == minlength){
  40. count++;
  41. }
  42. }
  43. }
  44.  
  45. hash[sum]=i;
  46. }
  47. cout<<count;
  48. return 0;
  49. }
Success #stdin #stdout 0.01s 5320KB
stdin
8 15 
10 5 2 7 1 9 8 7 
stdout
2