fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3. #define fo(i,start,end) for(int i=start;i<end;i++)
  4. using namespace std;
  5.  
  6. int main() {
  7. int arr[] = {3,1,3,-2,2};
  8. int k = 4;
  9. int n = 5;
  10. //find the largest and smallest length of subarray with sum = K
  11. // int mini = INT_MAX;
  12. int maxi = INT_MIN;
  13. int sum = 0;
  14. unordered_map<int,int>mp;
  15. mp[0] = -1;
  16. fo(i,0,n){
  17. sum += arr[i];
  18. int query = sum - k;
  19. if(mp.find(query) != mp.end()){
  20. maxi = max(maxi,i-mp[query]);
  21. }
  22. if(mp.find(sum) == mp.end()){
  23. mp[sum] = i;
  24. }
  25. }
  26. cout<<"largest subarray length with sum "<<k<<" is "<<maxi<<endl;
  27. // cout<<"smallest subarray length with sum "<<k<<" is "<<mini<<endl;
  28. return 0;
  29. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
largest subarray length with sum 4 is 4