fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class sol {
  5. public:
  6. int lsa(vector<int>& a,int lmt) {
  7. int l=0,r=0,ans=0;
  8. deque<int> m1,m2;
  9.  
  10. while(r<a.size()) {
  11. while(!m1.empty()&&m1.back()>a[r]) {
  12. m1.pop_back();
  13. }
  14. while(!m2.empty()&&m2.back()<a[r]) {
  15. m2.pop_back();
  16. }
  17. m1.push_back(a[r]);
  18. m2.push_back(a[r]);
  19.  
  20. while(m2.front()-m1.front()>lmt) {
  21. if(m1.front()==a[l]) {
  22. m1.pop_front();
  23. }
  24. if(m2.front()==a[l]) {
  25. m2.pop_front();
  26. }
  27. ++l;
  28. }
  29. ans=max(ans,r-l+1);
  30. ++r;
  31. }
  32. return ans;
  33. }
  34. };
  35.  
  36. int main() {
  37. sol s;
  38. vector<int> nums={8,2,4,7};
  39. int limit=4;
  40. cout<<s.lsa(nums,limit)<<endl;
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0s 5272KB
stdin
Standard input is empty
stdout
2