#pragma GCC diagnostic warning "-std=c++11"
#include <bits/stdc++.h>
#define pb push_back
#define f first
#define s second
#define MOD 1000000007
#define flush fflush(stdout)
#define all(x) (x).begin(),(x).end()
#define allr(x) (x).rbegin(), (x).rend()
#define pii pair<int,int>
using namespace std;
const int N=2e5+5;
int n,m,T,k;
int t[N*4];
void build(int v, int tl, int tr) {
if (tl==tr) {
t[v]=0; return;
}
int mid=(tl+tr)/2;
build(v*2,tl,mid); build(v*2+1,mid+1,tr);
t[v]=0;
}
void update(int v, int tl, int tr, int ind, int val) {
if (tl==tr) {
t[v]=val; return;
}
int mid=(tl+tr)/2;
if (ind<=mid) update(v*2,tl,mid,ind,val);
else update(v*2+1,mid+1,tr,ind,val);
t[v]=max(t[v*2],t[v*2+1]);
}
int query(int v, int tl, int tr, int l, int r) {
if (l>r) return 0;
if (tl==l && tr==r) return t[v];
int mid=(tl+tr)/2;
return max(query(v*2,tl,mid,l,min(r,mid)),query(v*2+1,mid+1,tr,max(l,mid+1),r));
}
void test_case() {
cin>>n>>k;
int arr[n+1],a[n+1],b[n+1]; map<int,int> mymap;
vector<int> prefdp(n+1,0),sufdp(n+2,0);
for (int i=1; i<=n; i++) {
cin>>arr[i];
}
for (int i=1; i<=n; i++) {
a[i]=arr[i];
}
sort(a+1,a+1+n);
for (int i=1; i<=n; i++) {
mymap[a[i]]=i;
}
for (int i=1; i<=n; i++) {
b[i]=mymap[arr[i]];
}
build(1,1,n);
for (int i=1; i<=n; i++) {
prefdp[i]=query(1,1,n,1,b[i]-1)+1;
update(1,1,n,b[i],prefdp[i]);
}
build(1,1,n);
for (int i=n; i>=1; i--) {
sufdp[i]=query(1,1,n,b[i]+1,n)+1;
update(1,1,n,b[i],sufdp[i]);
}
int ans=0;
for (int i=1; i<=n; i++) {
ans=max(ans,prefdp[i]);
}
build(1,1,n);
for (int i=1; i<=n; i++) {
int l=1,r=n,ind=0;
while (l<=r) {
int mid=(l+r)/2;
if (a[mid]-k<a[b[i]]) {
l=mid+1; ind=mid;
}
else{
r=mid-1;
}
}
// cout<<i<<" "<<ind<<endl;
ans=max(ans,sufdp[i]+query(1,1,n,1,ind));
update(1,1,n,b[i],prefdp[i]);
}
cout<<ans<<endl;
}
int main () {
ios :: sync_with_stdio(0);
cin.tie(0); cout.tie(0);
T=1;
while (T--) test_case();
}
Compilation message (stderr)
glo.cpp:1:32: warning: '-std=c++11' is not an option that controls warnings [-Wpragmas]
1 | #pragma GCC diagnostic warning "-std=c++11"
| ^~~~~~~~~~~~
# | 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... |