제출 #607635

#제출 시각아이디문제언어결과실행 시간메모리
607635skittles1412Packing Biscuits (IOI20_biscuits)C++17
21 / 100
1090 ms63288 KiB
#include "bits/extc++.h"

using namespace std;

template <typename T>
void dbgh(const T& t) {
    cerr << t << endl;
}

template <typename T, typename... U>
void dbgh(const T& t, const U&... u) {
    cerr << t << " | ";
    dbgh(u...);
}

#ifdef DEBUG
#define dbg(...)                                              \
    cerr << "L" << __LINE__ << " [" << #__VA_ARGS__ << "]: "; \
    dbgh(__VA_ARGS__);
#else
#define dbg(...)
#define cerr   \
    if (false) \
    cerr
#endif

using ll = long long;

#define endl "\n"
#define long int64_t
#define sz(x) int((x).size())

const int maxn = 300;

long k, arr[maxn];
map<long, long> memo[maxn];

long dp(int ind, long prev) {
    if (ind == maxn) {
        return 1;
    }
    auto it = memo[ind].find(prev);
    if (it != memo[ind].end()) {
        return it->second;
    }
    long cur = arr[ind] + prev;
    long ans = dp(ind + 1, cur / 2);
    if (cur >= k) {
        ans += dp(ind + 1, (cur - k) / 2);
    }
    return memo[ind][prev] = ans;
}

ll count_tastiness(ll _k, vector<ll> _arr) {
    k = _k;
    memset(arr, 0, sizeof(arr));
    copy(begin(_arr), end(_arr), arr);
    for (auto& a : memo) {
        a.clear();
    }
    return dp(0, 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...