Submission #1046687

#TimeUsernameProblemLanguageResultExecution timeMemory
1046687_rain_Holding (COCI20_holding)C++14
55 / 110
28 ms76932 KiB
#include<bits/stdc++.h> using i64 = long long; using namespace std; const int maxn = 100; const int maxk = 10000; int n,L,R,k; i64 a[maxn+2] , f1[maxn+2][maxk+2] , dp1[maxn+2][maxn+2][maxk+2] , dp2[maxn+2][maxn+2][maxk+2] , f2[maxn+2][maxk+2]; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define name "main" // freopen(name".inp","r",stdin); // freopen(name".out","w+",stdout); cin >> n >> L >> R >> k; for (int i = 1; i <= n; ++i) cin >> a[i]; i64 total = 0; for (int i = L; i <= R; ++i) total += a[i]; //... BUILD FOR THE LEFT i64 mx = 0; for (int i = 1; i < L; ++i) { for (int j = L; j <= R; ++j) { for (int used = 0; used <= k; ++used) { dp1[i][j][used] = min({dp1[i - 1][j][used] , dp1[i][j - 1][used]}); if (used - abs(i - j) >= 0) { dp1[i][j][used] = min(dp1[i][j][used] , dp1[i - 1][j - 1][used - abs(i - j)] + a[i] - a[j]); } f1[j][used] = min({f1[j - 1][used] , dp1[i][j][used] , f1[j][used]}); f1[j][used] = min(f1[j][used] , f1[j][used - 1]); } } } //... BUILD FOR THE RIGHT for (int i = n; i > R; --i) { for (int j = R; j >= L; --j) { for (int used = 0; used <= k; ++used) { dp2[i][j][used] = min(dp2[i+1][j][used] , dp2[i][j+1][used]); if (used - abs(i - j) >= 0) { dp2[i][j][used] = min(dp2[i][j][used] , dp2[i+1][j+1][used - abs(i - j)] + a[j] - a[i]); } f2[j][used] = min({f2[j + 1][used] , dp2[i][j][used] , f2[j][used] , f2[j][used - 1]}); } } } i64 answer = total; for (int i = L ; i <= R; ++i) for (int used = 0; used <= k; ++used) { if (i + 1 <= R) answer = min(answer , total + f1[i][used] + f2[i + 1][k - used]); answer = min(answer , total + f2[i][used]); answer = min(answer , total + f1[i][used]); } cout << answer; }

Compilation message (stderr)

holding.cpp: In function 'int main()':
holding.cpp:23:7: warning: unused variable 'mx' [-Wunused-variable]
   23 |   i64 mx = 0;
      |       ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...