Submission #1207675

#TimeUsernameProblemLanguageResultExecution timeMemory
1207675simona1230Packing Biscuits (IOI20_biscuits)C++20
12 / 100
1 ms396 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;

long long p[64];
long long ans,nd,b[64];
long long s[64];
vector<long long> v;
long long count_tastiness(long long x, std::vector<long long> a)
{
    p[0]=1;
    for(int i=1; i<60; i++)
        p[i]=p[i-1]*2;

    while(a.size()<60)a.push_back(0);
    if(1)
    {
        for(int i=0;i<a.size();i++)
        {
            if(a[i]>=x)
            {
                long long lf=a[i]-x;
                a[i]=x+lf%(2*x);
                a[i+1]+=lf/(2*x);
            }
        }
        ans=1;
        long long curr=1,cnt=0;
        for(int i=0;i<a.size();i++)
        {
            //cout<<a[i]<<" ";
            if(a[i]==0)
            {
                ans*=curr;
                curr=1;
                cnt=0;
            }
            else
            {
                curr+=p[cnt]*a[i];
                cnt++;
            }
        }
        //cout<<endl;
        ans*=curr;
        return ans;
    }

    s[0]=a[0];
    for(int i=1; i<60; i++)
    {
        s[i]=s[i-1];
        if(i<a.size())s[i]+=a[i]*p[i];
    }
    nd=x;
    ans=0;

    v.clear();
    v.push_back(0);
    for(int i=0;i<60;i++)
    {
        int sz=v.size();
        int j=0;
        while(j<sz&&(v[j]+p[i])<=s[i]/nd)
        {
            v.push_back(v[j]+p[i]);
            j++;
        }
    }
    //cout<<"? "<<v.size()<<endl;
    return v.size();
}
#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...