fork download
  1. #include<bits/stdc++.h>
  2. #include <unordered_map>
  3. using namespace std;
  4.  
  5. int main() {
  6. // your code goes here
  7. int arr[]={1, 2, 3, 4, 5, -1, 6};
  8. int k=9;
  9. int n=sizeof(arr)/sizeof(arr[0]);
  10. int sum=0;
  11. int maxi=0;
  12. int mini=1e9;
  13.  
  14. unordered_map<int,int>m;
  15. unordered_map<int,int>q;
  16. m[0]=-1;
  17. for(int i=0;i<n;i++){
  18. sum+=arr[i];
  19. int un=sum-k;
  20. if(m.find(un)!=m.end()){
  21. int x=m[un]+1;
  22. int dist=i-x+1;
  23. if(dist>maxi){
  24. maxi=dist;
  25. }
  26.  
  27. }
  28. if(q.find(un)!=q.end()){
  29. int y=q[un]+1;
  30. int dist=i-y+1;
  31. if(dist<mini){
  32. mini=dist;
  33. }
  34.  
  35. }
  36. if(m.find(sum)==m.end()){
  37. m[sum]=i;
  38. }
  39. q[sum]=i;
  40. }
  41. cout<<maxi<<" "<<mini<<endl;
  42. return 0;
  43. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
3 2