#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
class Solution {
public:
int longestSubarray(vector<int>& nums, int limit) {
int n = nums.size();
int i = 0;
int j = 0;
multiset<int> st;
int ans = 0;
while (j < n) {
st.insert(nums[j]);
while (*st.rbegin() - *st.begin() > limit) {
st.erase(st.find(nums[i]));
i++;
}
ans = max(ans, j - i + 1);
j++;
}
return ans;
}
};
int main() {
Solution sol;
// Example test case
vector<int> nums = {8, 2, 4, 7};
int limit = 4;
int result = sol.longestSubarray(nums, limit);
cout << result << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFNvbHV0aW9uIHsKcHVibGljOgogICAgaW50IGxvbmdlc3RTdWJhcnJheSh2ZWN0b3I8aW50PiYgbnVtcywgaW50IGxpbWl0KSB7CiAgICAgICAgaW50IG4gPSBudW1zLnNpemUoKTsKICAgICAgICBpbnQgaSA9IDA7CiAgICAgICAgaW50IGogPSAwOwoKICAgICAgICBtdWx0aXNldDxpbnQ+IHN0OwoKICAgICAgICBpbnQgYW5zID0gMDsKCiAgICAgICAgd2hpbGUgKGogPCBuKSB7CiAgICAgICAgICAgIHN0Lmluc2VydChudW1zW2pdKTsKICAgICAgICAgICAgd2hpbGUgKCpzdC5yYmVnaW4oKSAtICpzdC5iZWdpbigpID4gbGltaXQpIHsKICAgICAgICAgICAgICAgIHN0LmVyYXNlKHN0LmZpbmQobnVtc1tpXSkpOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBhbnMgPSBtYXgoYW5zLCBqIC0gaSArIDEpOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYW5zOwogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBTb2x1dGlvbiBzb2w7CiAgICAKICAgIC8vIEV4YW1wbGUgdGVzdCBjYXNlCiAgICB2ZWN0b3I8aW50PiBudW1zID0gezgsIDIsIDQsIDd9OwogICAgaW50IGxpbWl0ID0gNDsKCiAgICBpbnQgcmVzdWx0ID0gc29sLmxvbmdlc3RTdWJhcnJheShudW1zLCBsaW1pdCk7CiAgICBjb3V0IDw8IHJlc3VsdCA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9