#include "bits/stdc++.h"
using namespace std;
#define intt long long
#define fi first
#define se second
#define endl "\n"
const intt mxN = 2e5+67;
const intt LG = 20;
const intt inf = 1e18;
const intt mod = 1e9 + 7;
const intt p = 997;
vector<intt> a(mxN), sol(mxN, inf), sag(mxN, inf), dpL(mxN), dpR(mxN);
map<intt,intt> comp;
set<intt> st;
intt avil = 1;
void smile() {
intt n, k;
cin >> n >> k;
for(intt i = 0; i < n; i++) {
cin >> a[i];
}
sol.assign(n + 1, inf);
sag.assign(n + 1, inf);
for(intt i = 0; i < n; i++) {
intt ind = lower_bound(sol.begin(), sol.end(), a[i]) - sol.begin();
sol[ind] = a[i];
dpL[i] = ind + 1;
}
for(intt i = n - 1; i >= 0; i--) {
intt cnt = lower_bound(sag.begin(), sag.end(), -1 * (a[i] - k)) - sag.begin();
dpR[i] = cnt + 1;
intt ind = lower_bound(sag.begin(), sag.end(), -1 * a[i]) - sag.begin();
sag[ind] = -1 * a[i];
}
intt ans = 0;
for(intt i = 0; i < n; i++) {
ans = max(ans, dpL[i] + dpR[i] - 1);
}
cout << ans << endl;
}
//ome47
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// freopen("island.in", "r", stdin);
// freopen("island.out", "w", stdout)
intt t = 1, buu = 1;
// cin >> t;
while(t--){
// cout << endl;
// cout << "Case #" << buu++ << ": ";
smile();
}
}
| # | 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... |