#include <bits/stdc++.h>
using namespace std;
#define int long long
#define N 500005
const int inf = 1e18;
int tc = 1, n, a[N], t, pref[N];
int32_t main() {
ios::sync_with_stdio(0);cin.tie(0);
cin >> n >> t;
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
vector <int> v(n + 1,INT_MAX);
for(int i = 1; i <= n; i++) {
auto l = lower_bound(v.begin(),v.end(), a[i]) - v.begin();
v[l] = a[i];
pref[i] = l + 1;
}
int longest_ans = 0;
v = vector<int> (n + 1, INT_MAX);
for(int i = n; i >= 1; i--) {
auto l = lower_bound(v.begin(),v.end(), -a[i] + t) - v.begin();
longest_ans = max(longest_ans, pref[i] + l);
int ins = lower_bound(v.begin(),v.end(), -a[i]) - v.begin();
v[ins] = -a[i];
}
cout << longest_ans << '\n';
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... |