#include <bits/stdc++.h>
#define long long long
using namespace std;
multiset<pair<int,int>> m;
int main(){
int n,d;cin>>n>>d;
vector<int>a(n);
for(int&i:a)cin>>i;
const pair<int,int> oo={0,0};
vector<pair<int,int>> f(n,oo), q(n,oo);
// base
f[0]={-1,a[0]};
q[0]=f[0];
m.insert(f[0]);
m.insert(q[0]);
int ans=1;
for(int i=1;i<n;i++){
if(i>d){
int j=i-d-1;
m.erase(m.find(f[j]));
m.erase(m.find(q[j]));
}
f[i]=*m.begin();
if(a[i]>f[i].second){
f[i].first--;
f[i].second=a[i];
}
ans=max(ans,-f[i].first);
m.insert(f[i]);
q[i]={-1,a[i]};
for(auto it=m.begin();it!=m.end();++it)
if(it->second<a[i]){
q[i]=*it;
q[i].first--;
q[i].second=a[i];
break;
}
ans=max(ans,-q[i].first);
m.insert(q[i]);
}
cout<<ans;
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... |