Submission #1322488

#TimeUsernameProblemLanguageResultExecution timeMemory
1322488aaaaaaaaSkyline (IZhO11_skyline)C++20
0 / 100
42 ms100704 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int inf = 2e18; const int mxN = 305; int dp[mxN][205][205], a[mxN]; signed main(){ ios::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; for(int i = 1; i <= n; ++i){ cin >> a[i]; } for(int i = 0; i < mxN; ++i){ for(int j = 0; j < 205; ++j){ for(int k = 0; k < 205; ++k){ dp[i][j][k] = inf; } } } if(n == 1){ cout << a[1] * 3 << "\n"; }else if(n == 2){ cout << min(a[1], a[2]) * 5 + abs(a[1] - a[2]) * 5 << "\n"; }else{ for(int i = 0; i <= a[1]; ++i){ dp[2][a[1] - i][a[2]] = i * 3; } for(int i = 2; i <= n; ++i){ for(int prev = a[i - 1]; prev >= 0; --prev){ for(int cur = a[i]; cur >= 0; --cur){ dp[i][prev][cur] = min(dp[i][prev][cur], dp[i][prev][cur + 1] + 3); } } for(int prev = a[i - 1]; prev >= 0; --prev){ for(int cur = a[i]; cur >= 0; --cur){ dp[i][prev][cur] = min(dp[i][prev][cur], dp[i][prev + 1][cur + 1] + 5); } } for(int j = min({a[i - 1], a[i], a[i + 1]}); j >= 0; --j){ for(int cur = a[i]; cur >= j; --cur){ dp[i + 1][cur - j][a[i + 1] - j] = min(dp[i + 1][cur - j][a[i + 1] - j], dp[i][j][cur] + 7 * j); } } } cout << dp[n][0][0] << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...