#include <bits/stdc++.h>
using namespace std;
#define pii pair <int,int>
const int N=2e5+5;
int n,m,a[N],ans;
pii dpl[N],dpr[N];
vector <int> lis,lds;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=1;i<=n;i++) cin >> a[i];
for(int i=1;i<=n;i++){
int idx=lower_bound(lis.begin(),lis.end(),a[i])-lis.begin();
if(idx==lis.size()) lis.push_back(a[i]);
else lis[idx]=a[i];
dpl[i]={lis.size(),lis.back()};
}
for(int i=n;i>=1;i--){
int idx=lower_bound(lds.begin(),lds.end(),a[i],greater <int>())-lds.begin();
if(idx==lds.size()) lds.push_back(a[i]);
else lds[idx]=a[i];
dpr[i]={lds.size(),lds.back()};
//for(int x:lds) cout << x << " ";
//cout << "\n";
}
for(int i=1;i<=n;i++){
if(abs(dpl[i].second-dpr[i+1].second)<m){
ans=max(ans,dpl[i].first+dpr[i+1].first);
}
}
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... |