Submission #1246465

#TimeUsernameProblemLanguageResultExecution timeMemory
1246465adam17Uplifting Excursion (BOI22_vault)C++20
5 / 100
5093 ms8260 KiB
#include <iostream> #include <vector> using namespace std; #define ll long long ll M, L, N, NN, MM; vector<ll> A; vector<ll> DP; int main() { cin >> M >> L; MM = 2 * M + 1; A.resize(MM); N = 0; for (ll i = 0; i < MM; i++) { cin >> A[i]; N += abs(i - M) * A[i]; } NN = 2 * N + 1; DP.resize(NN); for (ll i = 0; i < NN; i++) { DP[i] = -1000000000000000; } DP[N] = 0; for (ll i = 0; i < MM; i++) { ll x = i - M; for (ll _ = 0; _ < A[i]; _++) { if (x >= 0) { for (ll j = NN - 1; j >= x; j--) { DP[j] = max(DP[j], DP[j - x] + 1); } } else { for (ll j = 0; j < NN + x; j++) { DP[j] = max(DP[j], DP[j - x] + 1); } } } } if (abs(L) > N) { cout << "impossible\n"; } else if (DP[L + N] < 0) { cout << "impossible\n"; } else { cout << DP[L + N] << endl; } 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...