#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    int n,x;
    cin>>n>>x;
    vector<int> a(n);
    for(int i=0;i<n;++i){
        cin>>a[i];
    }
    vector<int> v;
    vector<int> pre(n);
    for(int i=0;i<n;++i){
        if(v.empty()||a[i]>v.back()){
            v.push_back(a[i]);
        } else {
            int pos=lower_bound(v.begin(),v.end(),a[i])-v.begin();
            pre[i]=pos+1;
            v[pos]=a[i];
        }
    }
    v.clear();
    int ans=0;
    // giảm dần dài nhất
    for(int i=n-1;i>=0;--i){
        if(v.empty()||v.back()>a[i]){
            v.push_back(a[i]);
        } else {
            *--upper_bound(v.rbegin(),v.rend(),a[i])=a[i];
        }
        if(i==0){
            ans=max(ans,(int)v.size());
        } else {
            ans=max(ans,pre[i-1]+(int)v.size()-(upper_bound(v.rbegin(),v.rend(),a[i]-x)-v.rbegin()));
        }
    }
    cout<<ans;
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |