Submission #867683

#TimeUsernameProblemLanguageResultExecution timeMemory
867683TAhmed33Uplifting Excursion (BOI22_vault)C++98
0 / 100
5084 ms401188 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll bad = -1e17; map <pair <ll, ll>, ll> dp; ll n, arr[250], l; ll ans (ll pos, ll cur) { if (dp.count({pos, cur})) return dp[{pos, cur}]; if (pos == -n - 1) { return dp[{pos, cur}] = (cur == l ? 0ll : bad); } dp[{pos, cur}] = ans(pos - 1, cur); for (int i = 1; i <= arr[pos + n]; i++) { dp[{pos, cur}] = max(dp[{pos, cur}], i + ans(pos - 1, cur + pos * i)); } return dp[{pos, cur}]; } int main () { cin >> n >> l; for (int i = -n; i <= n; i++) cin >> arr[i + n]; ll z = ans(n, 0); if (z < 0) { cout << "impossible\n"; } else { cout << z << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...