제출 #849898

#제출 시각아이디문제언어결과실행 시간메모리
849898MinaRagy06Uplifting Excursion (BOI22_vault)C++17
0 / 100
5033 ms524288 KiB
#include <bits/stdc++.h>
using namespace std;
typedef int64_t ll;

struct chash {
    const ll R = chrono::steady_clock::now().time_since_epoch().count();
    const ll C = ll(4e18 * acos(0)) + 73;
    ll operator()(ll x) {
        return __builtin_bswap64((x^R) * C);
    }
};
int m;
ll l, a[605];
unordered_map<ll, ll> mem[605];
ll solve(int i, ll s) {
    if (i == 2 * m + 1) {
        if (s == l) return 0;
        return -1e18;
    }
    if (mem[i].find(s) != mem[i].end()) {
        return mem[i][s];
    }
    ll ans = -1e18;
    for (int j = 0; j <= a[i]; j++) {
        ans = max(ans, j + solve(i + 1, s + j * (i - m)));
    }
    return mem[i][s] = ans;
}
int main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    cin >> m >> l;
    for (int i = 0; i < 2 * m + 1; i++) {
        cin >> a[i];
    }
    ll ans = solve(0, 0);
    if (ans < 0) {
        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...