Submission #1320354

#TimeUsernameProblemLanguageResultExecution timeMemory
1320354vaishakhvUplifting Excursion (BOI22_vault)C++20
5 / 100
1097 ms318468 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; using ll = long long; #define eb emplace_back #define m1(x) template<class T, class... U> void x(T&& a, U&&... b) #define m2(x) (ll[]){(x forward<U>(b),0)...} m1(pr){cout << forward<T>(a); m2(cout << " " <<); cout << "\n";} m1(re){cin >> forward<T>(a); m2(cin >>);} int main() { ios::sync_with_stdio(0); cin.tie(0); ll m, l; re(m, l); vector<ll> a(2*m+1); for (ll i{}; i < 2*m+1; i++){ re(a[i]); } if (abs(l) > 1e5) { pr("impossible"); return 0; } ll ofs = 1e5; ll rg = 2e5 + 1; vector<vector<ll>> dp(2*m+2, vector<ll>(rg, -1)); dp[0][ofs] = 0; for (ll i{}; i < 2*m+1; i++) { ll uplift = i - m; for (ll sum = 0; sum < rg; sum++) { if (dp[i][sum] == -1) continue; dp[i+1][sum] = max(dp[i+1][sum], dp[i][sum]); for (ll cnt = 1; cnt <= a[i]; cnt++) { ll new_sum = sum + cnt * uplift; if (new_sum >= 0 && new_sum < rg) { dp[i+1][new_sum] = max(dp[i+1][new_sum], dp[i][sum] + cnt); } } } } ll tgt = l + ofs; if (tgt >= 0 && tgt < rg && dp[2*m+1][tgt] != -1) { pr(dp[2*m+1][tgt]); } else { pr("impossible"); } }
#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...