#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int a[N],pf[N];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n,x;
cin >> n >> x;
for(int i=0;i<n;i++) cin >> a[i];
vector <int> dp(n,INT_MAX);
int ans=0;
for(int i=0;i<n;i++){
int j=lower_bound(dp.begin(),dp.end(),a[i])-dp.begin();
dp[j]=a[i];
pf[i]=j+1;
ans=max(ans,pf[i]);
}
dp=vector <int>(n,INT_MAX);
for(int i=n-1;i>=0;i--){
int pos=lower_bound(dp.begin(),dp.end(),-a[i]+x)-dp.begin();
ans=max(ans,pf[i]+pos);
int ip=lower_bound(dp.begin(),dp.end(),-a[i])-dp.begin();
dp[ip]=-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... |