#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
const int INF = 1e9 + 7;
int main(){
int n, x; cin >> n >> x;
vector<int> a(n+1);
for(int i = 1; i <= n; i++){
cin >> a[i];
}
int ans = 0;
vector<int> dp(n+1, INF);
vector<int> pref(n+1);
for(int i = 1; i <= n; i++){
int len = lower_bound(dp.begin() + 1, dp.end(), a[i] - x) - dp.begin();
dp[len] = a[i] - x;
pref[i] = len;
ans = max(ans, len);
}
for(int i = 0; i <= n; i++){
dp[i] = INF;
}
for(int i = 1; i <= n; i++){
int len = lower_bound(dp.begin() + 1, dp.end(), -(a[i] - x)) - dp.begin();
int idx = n - i +1;
ans = max(ans, pref[idx] + len - 1);
len = lower_bound(dp.begin() + 1, dp.end(), -a[i]) - dp.begin();
dp[len] = -a[i];
}
cout << ans << endl;
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... |