Submission #1225971

#TimeUsernameProblemLanguageResultExecution timeMemory
1225971PVM_pvmPacking Biscuits (IOI20_biscuits)C++20
0 / 100
1 ms328 KiB
#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;
long long f(int bit, long long klk)
{
    if (bit==ms.size()-1)
    {
        if (klk>=xx) return 2;
        return 1;
    }
    auto tyrs=un[bit].find(klk);
    if (tyrs!=un[bit].end()) 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) {
	ms=a;
	xx=x;
	for (int q=0;q<MAXK;q++) un[q].clear();
	return f(0,a[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...