제출 #1175969

#제출 시각아이디문제언어결과실행 시간메모리
1175969DanielPr8Uplifting Excursion (BOI22_vault)C++20
5 / 100
5092 ms8008 KiB
#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 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...