Submission #341642

#TimeUsernameProblemLanguageResultExecution timeMemory
341642keko37비스킷 담기 (IOI20_biscuits)C++14
0 / 100
36 ms7312 KiB
#include <bits/stdc++.h>
#include "biscuits.h"

using namespace std;

typedef long long llint;

const int MAXN = 70;
const llint B = 31337;

llint x;
llint a[MAXN], dp[MAXN], pref[MAXN];
unordered_map <llint, llint> mp;

llint calc (int pos, llint ost) {
	if (pos == 61) return 1;
	llint h = pos * B + ost;
	if (mp.find(h) != mp.end()) return mp[h];
	llint res = calc(pos + 1, (ost + a[pos]) / 2);
	if (ost + a[pos] >= x) {
		res += calc(pos + 1, (ost + a[pos] - x) / 2);
	}
	return mp[h] = res;
}

llint count_tastiness (llint X, vector <llint> A) {
	x = X;
	for (int i = 0; i <= 60; i++) a[i] = 0;
	for (int i = 0; i < (int)A.size(); i++) a[i] = A[i];
	return calc(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...