#include "biscuits.h"
#include<bits/stdc++.h>
using namespace std;
#define MAXK 60
unordered_map<long long, long long> un[MAXK];
long long xx;
vector<long long> ms(MAXK);
long long f(int bit, long long klk)
{
if (bit==MAXK-1)
{
if (klk>=xx) return 2;
return 1;
}
auto tyrs=un[bit].find(klk);
if (tyrs!=un[bit].end()) {
//cout<<tyrs->first<<" "<<tyrs->second<<" "<<klk<<"\n";
return tyrs->second;}
if (klk<xx)
{
long long cur=f(bit+1,ms[bit+1]+(klk/2));
un[bit][klk]=cur;
return cur;
}
long long cur=f(bit+1,ms[bit+1]+(klk/2))+f(bit+1,ms[bit+1]+((klk-xx)/2));
un[bit][klk]=cur;
//cout<<bit<<" "<<klk<<" "<<cur<<"\n";
return cur;
}
long long count_tastiness(long long x, vector<long long> a) {
for (int q=0;q<MAXK;q++) ms[q]=0;
for (int q=0;q<a.size();q++) ms[q]=a[q];
xx=x;
for (int q=0;q<MAXK;q++) un[q].clear();
return f(0,a[0]);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |