#include<bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n,x;
cin>>n>>x;
vector<int> v(n);
for(int i=0;i<n;i++)
{
cin>>v[i];
}
vector<int> dp,val(n);
for(int i=0;i<n;i++)
{
int pos=lower_bound(dp.begin(),dp.end(),v[i])-dp.begin();
int pos_2=lower_bound(dp.begin(),dp.end(),v[i]+x)-dp.begin();
val[i]=pos_2;
if(pos==dp.size())
{
dp.push_back(v[i]);
}
else
{
dp[pos]=v[i];
}
}
vector<int> dp2(n,0);
for(int i=n-1;i>=0;i--)
{
int pos=upper_bound(dp2.begin(),dp2.end(),v[i])-dp2.begin();
pos--;
dp2[pos]=v[i];
val[i]+=n-pos;
}
int ans=0;
for(int i=0;i<n;i++)
{
ans=max(ans,val[i]);
}
cout<<ans;
}
# | 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... |