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 ans=1;
  8. deque<int> minq,maxq;
  9.  
  10. for(int l=0,r=0;r<a.size();++r) {
  11. while(!minq.empty()&&minq.back()>a[r]) {
  12. minq.pop_back();
  13.  
  14. }
  15.  
  16. minq.push_back(a[r]);
  17. while(!maxq.empty()&&maxq.back()<a[r]) {
  18. maxq.pop_back();
  19. }
  20. maxq.push_back(a[r]);
  21.  
  22. while(maxq.front()-minq.front()>lmt) {
  23. if(minq.front()==a[l]) {
  24. minq.pop_front();
  25. }
  26.  
  27. if(maxq.front()==a[l]) {
  28. maxq.pop_front();
  29. }
  30. ++l;
  31. }
  32. ans=max(ans,r-l+1);
  33. }
  34. return ans;
  35. }
  36. };
  37.  
  38. int main() {
  39. sol s;
  40. vector<int> n={8,2,4,7};
  41. int l=4;
  42. cout<<s.lsa(n,l)<<endl;
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
2