#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb(a) push_back(a)
#define pp pop_back
#define mp(a, b) make_pair(a, b)
int32_t main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n, k, mx=0;
cin >> n >> k;
int t[n+1], maxsil[n+1];
for (int i=1; i<=n; i++) cin >> t[i];
map <int, int> m, m2; map <int, int>::iterator it;
m2[INT_MAX]=0;
for (int i=n; i>=1; i--) {
it=m2.upper_bound(t[i]);
int x=it->second+1;
maxsil[i]=x;
if (it!=m2.begin()) {it--; m2.erase(it);}
m2[t[i]]=x;
}
m[0]=0;
for (int i=1; i<n; i++) {
it=m.lower_bound(t[i]);
it--;
int x=it->second+1;
it++;
if (it!=m.end()) m.erase(it);
m[t[i]]=x;
int a=t[i+1]+k;
it=m.lower_bound(a);
it--;
//cout << maxsil[i+1] << " " << it->second << "\n";
mx=max(mx, maxsil[i+1]+it->second);
}
cout << mx << "\n";
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... |