#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int n,x;
cin>>n>>x;
int t[n+1];
int lis[n+1];
for(int q=1;q<=n;q++){
cin>>t[q];
}
vector<int>tmp;
for(int q=1;q<=n;q++){
int idx=lower_bound(tmp.begin(),tmp.end(),t[q])-tmp.begin();
if(idx==tmp.size()){
lis[q]=tmp.size()+1;
tmp.push_back(t[q]);
}
else{
lis[q]=idx+1;
tmp[idx]=t[q];
}
}
int ans=0;
tmp.clear();
for(int q=n;q>=1;q--){
int idx=lower_bound(tmp.begin(),tmp.end(),x-t[q])-tmp.begin();
ans=max(ans,lis[q]+idx);
ans=max(ans,lis[q]);
idx=lower_bound(tmp.begin(),tmp.end(),-t[q])-tmp.begin();
if(idx==tmp.size()){
tmp.push_back(-t[q]);
}
else{
tmp[idx]=-t[q];
}
}
cout<<ans<<endl;
}
# | 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... |