Submission #1320355

#TimeUsernameProblemLanguageResultExecution timeMemory
1320355vaishakhvUplifting Excursion (BOI22_vault)C++20
0 / 100
2 ms1848 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<ll> dp(rg, -1); dp[ofs] = 0; for (ll i{}; i < 2*m+1; i++) { ll uplift = i - m; if (a[i] == 0) continue; if (uplift > 0) { for (ll sum = rg-1; sum >= 0; sum--) { if (dp[sum] == -1) continue; for (ll cnt = 1; cnt <= a[i] && sum + cnt*uplift < rg; cnt++) { dp[sum + cnt*uplift] = max(dp[sum + cnt*uplift], dp[sum] + cnt); } } } else { for (ll sum = 0; sum < rg; sum++) { if (dp[sum] == -1) continue; for (ll cnt = 1; cnt <= a[i] && sum + cnt*uplift >= 0; cnt++) { dp[sum + cnt*uplift] = max(dp[sum + cnt*uplift], dp[sum] + cnt); } } } } ll tgt = l + ofs; if (tgt >= 0 && tgt < rg && dp[tgt] != -1) { pr(dp[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...