#include <bits/stdc++.h>
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl '\n'
#define ll long long
#define int long long
#define all(x) x.begin(), x.end()
#define seea(x) for(int i = 0; i < x; i++)
#define pb push_back
#define vc vector
using namespace std;
const int INF = INT_MAX;
void solve() {
int n, x;
cin >> n >> x;
vc<int> a(n);
seea(n) cin >> a[i];
vc<int> pref(n+1), suf(n+2), dp(n, INF);
int ans = 1;
for(int i = 1; i <= n; i++){
int j = lower_bound(all(dp), a[i-1]) - dp.begin();
dp[j] = a[i-1];
pref[i] = lower_bound(all(dp), INF) - dp.begin();
ans = max(ans, pref[i]);
}
dp.assign(n, INF);
for(int i = n; i >= 1; i--){
suf[i] = lower_bound(all(dp), -a[i-1] + x) - dp.begin();
int ins = lower_bound(all(dp), -a[i-1]) - dp.begin();
dp[ins] = -a[i-1];
}
for(int i = 1; i <= n; i++){
ans = max(ans, pref[i] + suf[i]);
}
cout << ans << endl;
}
signed main(){
fast;
int t = 1;
while(t--) solve();
}
# | 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... |