#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 200005;
int a[MAX_N],p[MAX_N],n,x,ans;
vector<int> dp,b;
int main()
{
cin >> n >> x;
for(int i = 1;i <= n;i++) cin >> a[i];
for(int i = n;i >= 1;i--)
{
auto it = lower_bound(dp.begin(),dp.end(),a[i],greater<int>());
int cnt = it-dp.begin();
if(cnt == dp.size()) dp.push_back(a[i]);
else dp[cnt] = a[i];
p[i] = cnt+1;
}
for(int i = 1;i <= n;i++)
{
int pos = lower_bound(b.begin(),b.end(),a[i]+x)-b.begin()-1;
if(!b.empty())
ans = max(ans,p[i]+pos+1);
auto it = lower_bound(b.begin(),b.end(),a[i]);
int cnt = it-b.begin();
if(cnt == b.size()) b.push_back(a[i]);
else b[cnt] = a[i];
}
cout << ans << '\n';
//for(int i = 1;i <= n;i++)
// cout << p[i] << ' ';
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... |