Submission #1175931

#TimeUsernameProblemLanguageResultExecution timeMemory
1175931DanielPr8Uplifting Excursion (BOI22_vault)C++20
0 / 100
321 ms53576 KiB
#include <bits/stdc++.h> using namespace std; using ll = __int128_t; using pp = 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); pp 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 >> q;ng[i-1]=q;a2+=ng[i-1];s2+=ng[i-1]*i;} cin >> z; for(ll i = 1; i <= n; ++i){cin >> q;ps[i-1]=q;a1+=ps[i-1];s1+=ps[i-1]*i;} if(s1-s2<l){ swap(s1, s2); swap(a1, a2); l=-l; swap(ng, ps); } l = s1-s2-l; vvl kn(n+1, vll(s1+s2+1, 1e18)); kn[0][s2]=0; for(ll i = 0; i < n; ++i){ for(ll j = 0; j <= s1+s2; ++j){ kn[i+1][j]=1e18; for(ll h = 0; h <= ps[i] && j>=h*(i+1); ++h){ kn[i+1][j] = min(kn[i+1][j], kn[i][j-(i+1)*h]+h); } } } reverse(all(kn)); for(ll i = 0; i < n; ++i){ for(ll j = 0; j <= s1+s2; ++j){ kn[i+1][j]=1e18; for(ll h = 0; h <= ng[i] && j+h*(i+1)<=s1+s2; ++h){ kn[i+1][j] = min(kn[i+1][j], kn[i][j+(i+1)*h]+h); } } } if(kn[n][l+s2]==1e18)cout << "impossible"; else cout << pp(a1+a2-kn[n][l+s2]+z); }
#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...