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. int M_count=0;
  14. int m_count=0;
  15.  
  16. unordered_map<int,int>m;
  17. unordered_map<int,int>q;
  18. m[0]=-1;
  19. for(int i=0;i<n;i++){
  20. sum+=arr[i];
  21. int un=sum-k;
  22. if(m.find(un)!=m.end()){
  23. int x=m[un]+1;
  24. int dist=i-x+1;
  25. if(dist>maxi){
  26. maxi=dist;
  27. M_count++;
  28. }
  29.  
  30. }
  31. if(q.find(un)!=q.end()){
  32. int y=q[un]+1;
  33. int dist=i-y+1;
  34. if(dist<mini){
  35. mini=dist;
  36. m_count++;
  37. }
  38.  
  39. }
  40. if(m.find(sum)==m.end()){
  41. m[sum]=i;
  42. }
  43. q[sum]=i;
  44. }
  45. cout<<maxi<<"-"<<M_count<<" "<<mini<<"-"<<m_count<<endl;
  46. return 0;
  47. }
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
3-1 2-2