#include <bits/stdc++.h>
using namespace std;
// #define int long long
signed main()
{
int n,R;
cin>>n>>R;
int a[n];
set<int> se;
for (int i=0;i<n;i++)
cin>>a[i];
se.insert(R);
vector<int> v;
for (int i=1;i<=5000;i++)
v.push_back(i);
int m=v.size();
int dp[2][m],l[m];
for (int i=0;i<m;i++)
dp[0][i]=n+1,l[i]=max(0,i-R);
dp[0][R-1]=1;
if (a[0]<=R)
dp[0][a[0]-1]=0;
for (int i=1;i<n;i++)
{
int suf[m];suf[m-1]=dp[1-i%2][m-1];
for (int j=m-2;j>=0;j--)
suf[j]=min(suf[j+1],dp[1-i%2][j]);
for (int j=0;j<m;j++)
dp[i%2][j]=suf[l[j]]+(a[i]!=j-1);
}
int ans=dp[1-n%2][0];
for (int i=1;i<m;i++)
ans=min(ans,dp[1-n%2][i]);
cout<<ans<<endl;
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... |