Submission #1075263

#TimeUsernameProblemLanguageResultExecution timeMemory
1075263allin27xPacking Biscuits (IOI20_biscuits)C++17
100 / 100
23 ms980 KiB
#include <bits/stdc++.h>
using namespace std;
#include "biscuits.h"
#define int long long

int S[61]; int X;
unordered_map<int,int> memo;

int dp(int n){
	if (n<=0) return 0;
	if (memo.count(n)) return memo[n];
	int l2=0; int t=1; while (2*t < n) l2++, t*=2;
	return memo[n] = dp(t) + dp(min(1+ S[l2]/X, n) - t);
}

long long count_tastiness(long long x, std::vector<long long> a) {
	memo.clear(); X = x; a.resize(61);
	S[0] = a[0];
	for (int i=1; i<61; i++) S[i] = S[i-1] + a[i] * (1ll<<i);
	memo[1] = 1;
	return dp((int)1e18+2);

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