Submission #1319251

#TimeUsernameProblemLanguageResultExecution timeMemory
1319251nikaa123Packing Biscuits (IOI20_biscuits)C++20
0 / 100
3 ms332 KiB
#include <bits/stdc++.h>
using namespace std;

long long p[65];
map <pair<int,long long>, long long> m;
long long s[65];

long long g(int i, long long n, long long x) {
	if (i < 0) return 1;
	if (n <= 0) return 0;
	if (m.count({i,n})) return m[{i,n}];
	long long res = g(i-1, min(n,p[i]), x);
	long long lim = min(n,s[i]/x+1);
	if (lim > p[i]) res += g(i-1, lim-p[i], x);
	return m[{i,n}] = res;
}

long long count_tastiness(long long x, std::vector<long long> a) {
	int k = a.size();
	long long res = 1;
	long long cur = 0;
	m.clear();
	for (int i = 0; i < 60; i++) {
		cur += a[i] * res;
		s[i] = cur;
		p[i] = res;
		res *= 2;
	}
	return g(60,1e9,x);
}

#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...