#include<bits/stdc++.h>
using namespace std;
#define int long long
#define inf 5e18
#define nl '\n'
inline void solve(){
int n, x;
cin>>n>>x;
int a[n];
for(int i=0; i<n; i++) cin>>a[i];
int pre[n];
vector<int> v;
for(int i=0; i<n; i++){
if(v.empty() or v.back() < a[i]){
v.push_back(a[i]);
pre[i] = v.size();
continue;
}
int ix = lower_bound(v.begin(), v.end(), a[i]) - v.begin();
v[ix] = a[i];
pre[i] = ix+1;
}
int ans = 0;
v.clear();
for(int i=n-1; i>=0; i--){
if(v.empty() or 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-1] - x) - v.rbegin()));
}
cout<<ans;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(NULL);cout.tie(NULL);
int t = 1;
//cin>>t;
while(t--) solve();
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... |