제출 #144402

#제출 시각아이디문제언어결과실행 시간메모리
144402brcodeRabbit Carrot (LMIO19_triusis)C++14
35 / 100
239 ms98552 KiB
#include <iostream>
#include <set>
using namespace std;
const int MAXN = 5010;
int ans = 1e9;
int dp[MAXN][MAXN];
int arr[MAXN];
int pref[MAXN];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>arr[i];
    }

    for(int i=0;i<=5000;i++){
        if(i == 0){
            dp[0][i] = 0;
        }else{
            dp[0][i] = 1e8;
        }
        
    }
            pref[5001] = 1e9;
        for(int j=5000;j>=0;j--){
            pref[j] = 1e9;
            pref[j] = min(pref[j+1],dp[0][j]);
        }
    for(int i=1;i<=n;i++){
        
       
         for(int j=0;j<=5000;j++){
            int lptr = j-m-1;
           // cout<<j<<endl;
           int hold = pref[0];
            if(lptr>=0){
                hold = pref[lptr+1];
            }
            
            
            dp[i][j] = (int)hold;
            if(arr[i] !=j){
                dp[i][j]++;
            }else{
               // cout<<arr[i]<<endl;
                
            }
            
        }
        pref[5001] = 1e9;
        for(int j=5000;j>=0;j--){
            pref[j] = 1e9;
            pref[j] = min(pref[j+1],dp[i][j]);
        }
    }
    //cout<<dp[3][700]<<endl;
    for(int i=0;i<=5000;i++){
        ans = min(ans,dp[n][i]);
    }
    cout<<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...