제출 #930146

#제출 시각아이디문제언어결과실행 시간메모리
930146takeonickyStove (JOI18_stove)C++14
20 / 100
41 ms80620 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN = 1e3; const long long INF = 1e15; int n, k; int a[MAXN+5]; long long dp[MAXN+5][MAXN+5][5]; long long f(int idx, int cnt, int state){ if(cnt > k) return INF; if(idx == n){ if(state == 1) return 0; else{ if(cnt < k) return 1; return INF; } } long long &ret = dp[idx][cnt][state]; if(ret != -1) return ret; ret = INF; if(state){ ret = min(ret, f(idx+1, cnt, 1) + (a[idx+1]-a[idx])); ret = min(ret, f(idx+1, cnt, 0) + (a[idx+1]-a[idx])); } else{ ret = min(ret, f(idx+1, cnt+1, 1) + 1); ret = min(ret, f(idx+1, cnt+1, 0) + 1); } return ret; } int main(){ memset(dp, -1, sizeof(dp)); cin>>n>>k; for(int i=1; i<=n; i++){ cin>>a[i]; } cout<<f(0,0,0)<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...