Submission #303372

#TimeUsernameProblemLanguageResultExecution timeMemory
303372ElegiaPacking Biscuits (IOI20_biscuits)C++17
42 / 100
1049 ms41744 KiB
#include "biscuits.h"

#include <functional>
#include <unordered_map>

using namespace std;

using ll = long long;

ll count_tastiness(ll x, vector<ll> a) {
	vector<unordered_map<ll, ll>> dp(61);
	a.resize(61);
	for (int i = 0; i < 60; ++i)
		if (a[i] >= x) {
			ll tak = (a[i] - x) / x / 2;
			a[i + 1] += tak * x;
			a[i] -= tak * 2 * x;
		}
	function<ll(int, ll)> dfs = [&](int k, ll v) {
		if (k == 60) return 1LL;
		if (dp[k].count(v))
			return dp[k][v];
		ll ret = dfs(k + 1, (v + a[k]) / 2);
		if (v + a[k] >= x) ret += dfs(k + 1, (v + a[k] - x) / 2);
		return dp[k][v] = ret;
	};
	return dfs(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...