#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i , a , b) for(int i = a ; i <= b ; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define maxn 200005
#define REVERSE(i , a , b) for(int i = a; i >= b; i--)
ll a[maxn] , b[maxn] , c[maxn];
int l[maxn] , r[maxn];
int main(){
FAST;
int n;
ll x;
cin >> n >> x;
FOR(i , 1 , n) cin >> a[i];
FOR(i , 1 , n) b[i] = LLONG_MAX;
int ans = 0;
FOR(i , 1 , n){
int k = lower_bound(b + 1 , b + n + 1, a[i]) - b;
b[k] = a[i];
l[i] = k;
}
FOR(i , 1 , n) b[i] = LLONG_MAX;
FOR(i , 1 , n) c[i] = a[n - i + 1];
FOR(i , 1 , n){
int k = lower_bound(b + 1 , b + n + 1, c[i] + x) - b;
b[k] = c[i] + x;
r[n - i + 1] = k;
}
FOR(i , 1 , n) ans = max(ans , l[i] + r[i] - 1);
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... |