#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 10;
const int mxn = 1e6 + 10;
int n, x, a[mxn], dp[mxn];
int main() {
cin >> n >> x;
for(int i = 0; i < n; i++)
cin >> a[i];
vector<int> MS(n + 1, INF);
function<int(int)> replace = [&](int val) {
int ind = lower_bound(MS.begin(), MS.end(), val) - MS.begin();
MS[ind] = val;
return ind;
};
for(int i = n - 1; i >= 0; i--)
dp[i] = replace(-a[i]) + 1;
MS.clear();
MS.resize(n + 1, INF);
int ans = 0;
for(int i = 0; i < n; i++) {
int tmp = lower_bound(MS.begin(), MS.end(), a[i]) - MS.begin();
ans = max(ans, tmp + dp[i]);
replace(a[i] - x);
}
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... |