Submission #707716

#TimeUsernameProblemLanguageResultExecution timeMemory
707716JohannUplifting Excursion (BOI22_vault)C++14
0 / 100
1 ms468 KiB
#include "bits/stdc++.h" using namespace std; typedef long long ll; typedef pair<ll, ll> pii; typedef vector<pii> vpii; typedef vector<ll> vi; #define sz(x) (int)(x).size() const int MAXSIZE = 1000; // 1000000 int main() { ios::sync_with_stdio(false); cin.tie(0); ll M, L; cin >> M >> L; vi A(2 * M + 1); for (int i = 0; i < sz(A); ++i) cin >> A[i]; vi dp(MAXSIZE, -1); ll center = MAXSIZE / 2; dp[center] = A[M]; for (ll m = 1; m <= M; ++m) { ll maxNum = A[m + M]; for (ll r = 0; r < m; ++r) { priority_queue<pii, vpii> q; for (int i = 0; m * i + r < sz(dp); ++i) { int idx = m * i + r; while (!q.empty() && q.top().second < idx - maxNum * m) q.pop(); if (dp[idx] != -1) q.push({dp[idx] - i, idx}); if (!q.empty()) dp[idx] = i + q.top().first; } } } ll ans = dp[center + L]; if (ans == -1) cout << "impossible\n"; else cout << ans << "\n"; return 0; }
#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...