#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define endl "\n"
#define vec vector<ll>
#define vecvec vector<vector<ll>>
using namespace std;
/*#define FileName ""
string Ghhhh = ".in";
string Ghhhhh = ".out";
ifstream Girdi(FileName + Ghhhh);
ofstream Cikti(FileName + Ghhhhh);
#define cin Girdi
#define cout Cikti*/
inline void solve(){
ll n,x,ans = 0;
cin >> n >> x;
vector<ll> temps(n);
vector<ll> prefix_lis(n);
for(ll i = 0 ; i < n ; i++) cin >> temps[i];
vector<ll> lis;
for(ll i = 0 ; i < n ; i++){
ll j = lower_bound(lis.begin(),lis.end(),temps[i]) - lis.begin();
if(j == lis.size()) lis.pb(temps[i]);
else lis[j] = temps[i];
prefix_lis[i] = j+1;
ans = max(ans,prefix_lis[i]);
}
vector<ll> lis2;
for(ll i = n-1 ; i >= 0 ; i--){
ll pos = lower_bound(lis2.begin(),lis2.end(),-temps[i]+x) - lis2.begin();
ans = max(ans,prefix_lis[i] + pos);
ll j = lower_bound(lis2.begin(),lis2.end(),-temps[i]) - lis2.begin();
if(j == lis2.size()) lis2.pb(-temps[i]);
else lis2[j] = -temps[i];
}
cout << ans << endl;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
ll t = 1;
//cin >> t;
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... |