#include <bits/stdc++.h>
using namespace std;
int main() {
int N,M;
cin>>N>>M;
long long pillars[N];
memset(pillars,0,sizeof(pillars));
int ans = 0;
for(int i = 0;i<N;i++){
long long x;
cin>>x;
pillars[i] = x-M*(i);
}
vector<long long>dp(N+1,-1e17);
dp[0] = 1e17;
for (int i = 0; i <N; i++) {
int l = upper_bound(dp.begin(), dp.end(), pillars[i],greater<long long>()) - dp.begin();
if(l==1&&pillars[i]>M){
continue;
}
if (dp[l-1] >= pillars[i] && pillars[i] >= dp[l])
dp[l] = pillars[i];
}
for (int l = 0; l <= N; l++) {
if (dp[l] > -1e17)
ans = l;
}
cout<<N-ans<<endl;
}
# | 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... |