제출 #144398

#제출 시각아이디문제언어결과실행 시간메모리
144398brcodeRabbit Carrot (LMIO19_triusis)C++14
14 / 100
1066 ms31176 KiB
#include <iostream>
#include <set>
using namespace std;
const int MAXN = 5010;
int ans = 1e9;
int dp[MAXN][MAXN];
int arr[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;
        }
    }
    for(int i=1;i<=n;i++){
        
        multiset<int> s1;
        for(int j=0;j<=5000;j++){
          
            s1.insert(dp[i-1][j]);
            
        }
         for(int j=0;j<=5000;j++){
            int lptr = j-m-1;
           // cout<<j<<endl;
            if(lptr>=0){
                if(s1.size()){
                    if(s1.find(dp[i-1][lptr])!=s1.end()){
                        s1.erase(s1.find(dp[i-1][lptr]));
                    }
                }
            }
            
            int hold = 0;
            if(s1.size()){
                hold = *s1.begin();
            }
            dp[i][j] = (int)hold;
            if(arr[i] !=j){
                dp[i][j]++;
            }else{
               // cout<<arr[i]<<endl;
                
            }
            
        }
       
    }
    //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...