제출 #1017437

#제출 시각아이디문제언어결과실행 시간메모리
1017437vjudge1Holding (COCI20_holding)C++17
55 / 110
31 ms25920 KiB
#include <bits/stdc++.h> using namespace std; const int N = 52, K = 1e4 + 5; int n, l, r, money, a[N]; int dp[N][N][K]; int main(){ cin >> n >> l >> r >> money; for (int i = 1; i <= n; i ++) cin >> a[i]; for (int i = 0; i < K; i ++) dp[l][l][i] = a[l]; for (int i = l; i <= r; i ++){ for (int j = l; j > 0; j --){ for (int k = 0; k <= money; k ++){ if (j == l){ dp[i][j][k] = dp[i - 1][j][k] + a[i]; continue; } dp[i][j][k] = min(dp[i - 1][j][k] + a[i], dp[i][j + 1][k]); // cout << i << " " << j << " " << k << " : " << dp[i][j][k] << endl; if (k > 0) dp[i][j][k] = min(dp[i][j][k], dp[i][j][k - 1]); if (k >= abs(i - j)) dp[i][j][k] = min(dp[i][j][k], dp[i - 1][j + 1][k - abs(i - j)] + a[j]); } } } cout << dp[r][1][money] << 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...