#include <iostream>
#include <bits/stdc++.h>
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;
vector<int> nums = {8, 2, 4, 7};
int limit = 4;
int result = sol.longestSubarray(nums, limit);
cout << result << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBTb2x1dGlvbiB7CnB1YmxpYzoKICAgIGludCBsb25nZXN0U3ViYXJyYXkodmVjdG9yPGludD4mIG51bXMsIGludCBsaW1pdCkgewogICAgICAgIGludCBuID0gbnVtcy5zaXplKCk7CiAgICAgICAgaW50IGkgPSAwOwogICAgICAgIGludCBqID0gMDsKCiAgICAgICAgbXVsdGlzZXQ8aW50PiBzdDsKCiAgICAgICAgaW50IGFucyA9IDA7CgogICAgICAgIHdoaWxlIChqIDwgbikgewogICAgICAgICAgICBzdC5pbnNlcnQobnVtc1tqXSk7CiAgICAgICAgICAgIHdoaWxlICgqc3QucmJlZ2luKCkgLSAqc3QuYmVnaW4oKSA+IGxpbWl0KSB7CiAgICAgICAgICAgICAgICBzdC5lcmFzZShzdC5maW5kKG51bXNbaV0pKTsKICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYW5zID0gbWF4KGFucywgaiAtIGkgKyAxKTsKICAgICAgICAgICAgaisrOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgU29sdXRpb24gc29sOwogICAgdmVjdG9yPGludD4gbnVtcyA9IHs4LCAyLCA0LCA3fTsKICAgIGludCBsaW1pdCA9IDQ7CgogICAgaW50IHJlc3VsdCA9IHNvbC5sb25nZXN0U3ViYXJyYXkobnVtcywgbGltaXQpOwogICAgY291dCA8PCByZXN1bHQgPDwgIlxuIjsKCiAgICByZXR1cm4gMDsKfQ==