#include <iostream>
using namespace std;
const int N = 305;
int dp[N][N][N], a[N];
int main(){
for (int i=0;i<N;i++){
for (int j=0;j<N;j++)
for (int k=0;k<N;k++)
dp[i][j][k] = 1e9;
}
int n, M = 200;
cin>>n;
for (int i=1;i<=n;i++)
cin>>a[i];
dp[0][0][0] = 0;
for (int i=1;i<=n;i++){
for (int A=0;A<=a[i];A++){
for (int B=A;B<=a[i];B++)
dp[i][B - A][a[i] - A] = min(dp[i][B - A][a[i] - A], dp[i-1][A][B] + 7 * A);
}
for (int A=M;A>=0;A--){
for (int B=M;B>=0;B--)
dp[i][A][B] = min(dp[i][A][B], dp[i][A+1][B+1] + 5);
}
for (int A=M;A>=0;A--){
for (int B=M;B>=0;B--)
dp[i][A][B] = min(dp[i][A][B], dp[i][A][B+1] + 3);
}
}
cout<<dp[n][0][0]<<'\n';
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |