Submission #1279205

#TimeUsernameProblemLanguageResultExecution timeMemory
1279205SmuggingSpunSkyline (IZhO11_skyline)C++20
100 / 100
115 ms57128 KiB
#include<bits/stdc++.h> #define taskname "B" using namespace std; const int lim = 305; const int LIM = 205; const int INF = 1e9; int n, a[lim], f[lim][LIM][LIM]; int dp(int p, int a1, int a2){ if(p < 1 || a1 < 0 || a2 < 0){ return INF; } int& ans = f[p][a1][a2]; if(ans != -1){ return ans; } if(p == 1){ vector<int>b = {a[p], a1, a2}; int x = min({b[0], b[1], b[2]}); for(int i = 0; i < 3; i++){ b[i] -= x; } if(b[0] > 0 && b[1] > 0){ return ans = x * 7 + (min(b[0], b[1]) << 1) + max(b[0], b[1]) * 3; } if(b[1] > 0 && b[2] > 0){ return ans = x * 7 + (min(b[1], b[2]) << 1) + max(b[1], b[2]) * 3; } return ans = x * 7 + (b[0] + b[1] + b[2]) * 3; } if(a2 == 0){ return ans = dp(p - 1, a[p], a1); } return ans = min({dp(p, a1, a2 - 1) + 3, dp(p, a1 - 1, a2 - 1) + 5, dp(p - 1, a[p] - a2, a1 - a2) + 7 * a2}); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if(fopen(taskname".inp", "r")){ freopen(taskname".inp", "r", stdin); } cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i]; } if(n == 1){ return cout << a[1] * 3, 0; } if(n == 2){ return cout << (min(a[1], a[2]) << 1) + max(a[1], a[2]) * 3, 0; } memset(f, -1, sizeof(f)); cout << dp(n - 2, a[n - 1], a[n]); }

Compilation message (stderr)

skyline.cpp: In function 'int main()':
skyline.cpp:38:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |                 freopen(taskname".inp", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...