fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n;
  6. cin >> n;
  7.  
  8. vector<long long> a(n);
  9.  
  10. for (int i = 0; i < n; i++) {
  11. cin >> a[i];
  12. }
  13. long long k;
  14. cin>>k;
  15.  
  16.  
  17. unordered_map<int, int>mp1;
  18. unordered_map<int, int>mp2;
  19.  
  20. //mp1[0]=0;
  21. //mp2[0]=0;
  22.  
  23. int psum=0;
  24. int maxlen=0;
  25. int minlen=INT_MAX;
  26.  
  27. for(int j=0;j<n;j++){
  28. psum = psum+a[j];
  29. int x = psum-k;
  30. if (mp1.find(x) != mp1.end()) {
  31. int i = mp1[x] + 1;
  32. int length = j - i + 1;
  33.  
  34. maxlen = max(length, maxlen);
  35. }
  36.  
  37. if (mp2.find(x) != mp2.end()) {
  38. int i = mp2[x] + 1;
  39. int length = j - i + 1;
  40.  
  41. minlen = min(length, minlen);
  42. }
  43.  
  44.  
  45. if(mp1.find(psum)==mp1.end())
  46. mp1[psum]=j;
  47. mp2[psum]=j;
  48.  
  49.  
  50.  
  51. }
  52. cout<<maxlen<<""<<minlen;
  53.  
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0s 5316KB
stdin
10
1 2 3 4 5 1 2 3 1 4
10
stdout
43