// 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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |