Submission #714371

#TimeUsernameProblemLanguageResultExecution timeMemory
714371vjudge1Uplifting Excursion (BOI22_vault)C++17
0 / 100
5056 ms45944 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define OPT ios_base::sync_with_stdio(0); \ cin.tie(0); \ cout.tie(0) #define pii pair<int,int> #define pll pair<ll,ll> #define endl "\n" #define all(v) v.begin(), v.end() #define mpr make_pair #define pb push_back #define ts to_string #define fi first #define se second #define inf 0x3F3F3F3F #define bpc __builtin_popcount #define print(v) for(int i = 0; i < v.size(); i++) \ cout << v[i] << " "; \ cout<<endl; int main() { int n, L; cin >> n >> L; set<pii> s; int y = 0; for (int i = -n; i <= n; i++) { int x; cin >> x; if (i == 0) { y = x; continue; } set<pii> temp; for (int k = 1; k <= x; k++) { temp.insert(mpr(k * i, k)); for (pii f : s) { temp.insert(mpr(f.fi + k * i, f.se + k)); } } while (!temp.empty()) { int mx = 0; int t = (*temp.begin()).fi; while (!temp.empty() && (*temp.begin()).fi == t) { mx = max((*temp.begin()).se, mx); temp.erase(temp.begin()); } s.insert(mpr(t, mx)); } } if (L == 0) { cout << y << endl; return 0; } if ((*s.begin()).fi > L) { cout << "impossible\n"; return 0; } auto it = s.upper_bound(mpr(L, inf)); it--; if ((*it).fi == L) cout << (*it).se + y << endl; else cout << "impossible\n"; }
#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...