제출 #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...