Submission #1186356

#TimeUsernameProblemLanguageResultExecution timeMemory
1186356qwushaUplifting Excursion (BOI22_vault)C++20
5 / 100
5091 ms6684 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define int long long typedef long long ll; typedef long double ld; mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count()); int inf = 1e15; signed main() { int m, L; cin >> m >> L; vector<int> a(2 * m + 1); for (int i = 0; i < 2 * m + 1; i++) { cin >> a[i]; } if (m <= 100) { vector<int> dp(4e5 + 1); vector<int> maxi(4e5 + 1, -1); int cen = 2e5; dp[cen] = 1; maxi[cen] = 0; for (int i = 0; i < 2 * m + 1; i++) { int val = i - m; for (int j = 0; j < a[i]; j++) { if (val > 0) { for (int q = dp.size() - 1; q >= val; q--) { if (dp[q - val]) { dp[q] = 1; maxi[q] = max(maxi[q], maxi[q - val] + 1); } } } else { for (int q =0; q < dp.size() + val; q++) { if (dp[q - val]) { dp[q] = 1; maxi[q] = max(maxi[q], maxi[q - val] + 1); } } } } } if (abs(L) >= 2e5) { cout << "impossible" << '\n'; } else { int val = L + cen; if (dp[val]) { cout << maxi[val] << '\n'; } 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...