#include <bits/stdc++.h>
using namespace std;
int n, x, it, a[200200], dp[200200], ans;
vector<int> lis;
int main(){
cin.tie(nullptr)->sync_with_stdio(false);
cin >> n >> x;
for(int i = 1; i <= n; ++i){
cin >> a[i];
it = lower_bound(lis.begin(), lis.end(), a[i]) - lis.begin();
if(it == lis.size()) lis.push_back(a[i]);
else lis[it] = a[i];
dp[i] = it + 1;
ans = max(ans, dp[i]);
}
lis.clear();
for(int i = n; i > 0; --i){
it = lower_bound(lis.begin(), lis.end(), -a[i] + x) - lis.begin();
ans = max(ans, it + dp[i]);
it = lower_bound(lis.begin(), lis.end(), -a[i]) - lis.begin();
if(it == lis.size()) lis.push_back(-a[i]);
else lis[it] = -a[i];
}
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... |