Submission #1267089

#TimeUsernameProblemLanguageResultExecution timeMemory
1267089khfaresSličice (COCI19_slicice)C++20
90 / 90
30 ms472 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' using ll = long long; using pll = pair<ll, ll>; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); //___________________________ ll n, m, k; cin >> n >> m >> k; vector<ll> p(n), b(m+1); for (ll i = 0; i < n; i++) cin >> p[i]; for (ll i = 0; i <= m; i++) cin >> b[i]; vector<ll> dp(k+1, -(1e18)); dp[0] = 0; for (ll i = 0; i < n; i++) { ll cap = min(k, m-p[i]); vector<ll> newdp(k+1, -(1e18)); vector<ll> gain(cap+1); for (ll t = 0; t <= cap; t++) { gain[t] = b[p[i]+t] - b[p[i]]; } for (ll t = 0; t <= cap; t++) { for (ll j = t; j <= k; j++) { if (dp[j-t] != (ll)(-(1e18))) newdp[j] = max(newdp[j], dp[j-t]+gain[t]); } } dp = newdp; } ll ans = 0; for (ll i = 0; i < n; i++) ans += b[p[i]]; cout << dp[k]+ans << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...