#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]);
pre[i]=v.size();
} 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... |