#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);
for(int i = n - 1; i >= 0; i--) {
int val = -a[i];
int ind = lower_bound(MS.begin(), MS.end(), val) - MS.begin();
dp[i] = ind + 1;
// cout << i << " " << a[i] << ": " << dp[i] << endl;
MS[ind] = val;
}
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]);
// cout << i << ": " << tmp << " + " << dp[i] << endl;
int val = a[i] - x;
int ind = lower_bound(MS.begin(), MS.end(), val) - MS.begin();
MS[ind] = val;
}
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... |