#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, x; cin >> n >> x;
vector<int> a(n + 1), dp(n + 1), b, c;
for(int i = 0; i < n; i++){
cin >> a[i];
int id = lower_bound(b.begin(), b.end(), a[i]) - b.begin();
if(b.empty() || a[i] > b.back()) b.push_back(a[i]);
else b[id] = a[i];
dp[i] = id + 1;
}
for(int i = n - 1; i >= 0; i--){
dp[i] += lower_bound(c.begin(), c.end(), -a[i] + x) - c.begin();
if(c.empty() || -a[i] > c.back()) c.push_back(-a[i]);
else c[lower_bound(c.begin(), c.end(), -a[i]) - c.begin()] = -a[i];
}
cout << *max_element(dp.begin(), dp.end());
}
# | 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... |