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