fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void subarray_problem(vector<int> &arr,int k)
  5. {
  6. int mini = 1e9;
  7. int sum = 0;
  8. unordered_map<int,int> mpp;
  9. mpp[0] = -1;
  10. for(int i = 0;i<arr.size();i++)
  11. {
  12. sum += arr[i];
  13. if(mpp.find(sum-k) != mpp.end())
  14. {
  15. mini = max(mini,i-mpp[sum-k]);
  16. }
  17. mpp[sum] = i;
  18. }
  19. if(mini != 1e9)
  20. {
  21. int i = 0,cnt = 0;
  22. int j =0;
  23. int s = 0;
  24. int k1 = mini;
  25. while(j<arr.size())
  26. {
  27. s += arr[j];
  28. if(j-i+1<k1)
  29. {
  30. j++;
  31. }
  32. else if(j-i+1==k1)
  33. {
  34. if(s==k)
  35. {
  36. cnt++;
  37. }
  38. s -= arr[i];
  39. i++;
  40. j++;
  41.  
  42. }
  43. }
  44. cout<<cnt;
  45. }
  46. }
  47.  
  48. int main() {
  49. vector<int> arr = { 10,5,2,7,1,9,8,7 };
  50. int k = 15;
  51.  
  52. subarray_problem(arr,k);
  53. cout<<"hi";
  54. // cout<<result;
  55. return 0;
  56. }
Success #stdin #stdout 0.01s 5480KB
stdin
Standard input is empty
stdout
hi