#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector<ll>;
using vvl = vector<vll>;
using vb = vector<bool>;
using pll = pair<ll,ll>;
using vpl = vector<pll>;
using vvp = vector<vpl>;
using vi = vector<int>;
#define f first
#define s second
#define all(v) v.begin(),v.end()
#define pb push_back
int main(){
ios_base::sync_with_stdio(0);cin.tie(NULL);
ll n, l, z, q;
ll s1 = 0, s2=0, a1=0, a2 = 0;
cin >> n >> l;
vll ng(n),ps(n);
for(ll i = n; i > 0; --i){cin >> ng[i-1];a2+=ng[i-1];s2+=ng[i-1]*i;}
cin >> z;
for(ll i = 1; i <= n; ++i){cin >> ps[i-1];a1+=ps[i-1];s1+=ps[i-1]*i;}
if(l>s1 || -s2>l){cout << "impossible";return 0;}
vll kn(s1+s2+1, 1e18);
kn[s2]=0;
for(ll i = 0; i < n; ++i){
for(ll h = 1; h <= ps[i]; ++h){
for(ll j=s1+s2-(i+1); j>=0; --j){
kn[j+(i+1)] = min(kn[j+(i+1)], kn[j]+1);
}
}
}
for(ll i = 0; i < n; ++i){
for(ll h = 1; h <= ng[i]; ++h){
for(ll j = (i+1); j <= s1+s2; ++j){
kn[j-(i+1)] = min(kn[j-(i+1)], kn[j]+1);
}
}
}
if(kn[s1-l]==1e18)cout << "impossible";
else cout << a1+a2-kn[s1-l]+z;
}
# | 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... |