#include<bits/stdc++.h>
using namespace std;
const int N =2e5+5;
vector<int>a(N),mem,mem2;
vector<int>memreal(N);
map<int,int>m;
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
int n,x;cin>>n>>x;
for(int i=1;i<=n;i++){
cin>>a[i];
if(mem.empty()){
mem.push_back(a[i]-x);
memreal[i]=1;
continue;
}
auto itr = lower_bound(mem.begin(),mem.end(),a[i]-x);
if(itr==mem.end()){
mem.push_back(a[i]-x);
memreal[i]=mem.size();
}
else{
*(itr)=a[i]-x;
memreal[i]=itr-mem.begin()+1;
}
}
int ans = mem.size();
for(int i=n;i>=1;i--){
if(mem2.empty()){
mem2.push_back(-a[i]);
}
else {
auto itr2 = lower_bound(mem2.begin(),mem2.end(),-memreal[i]);
int idx = itr2-mem2.begin();
ans=max(ans,idx+memreal[i]);
auto itr = lower_bound(mem2.begin(),mem2.end(),-a[i]);
if(itr==mem2.end()){
mem2.push_back(-a[i]);
}
else{
*(itr)=-a[i];
}
}
}
cout<<ans;
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... |