Submission #1186281

#TimeUsernameProblemLanguageResultExecution timeMemory
1186281qwushaUplifting Excursion (BOI22_vault)C++20
5 / 100
5092 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 <= 50) {
        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...