Submission #1207647

#TimeUsernameProblemLanguageResultExecution timeMemory
1207647simona1230Packing Biscuits (IOI20_biscuits)C++20
Compilation error
0 ms0 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;


long long p[64],h[64];
long long ans,nd,b[64];
long long s[64];

void dfs(int i,long long curr)
{
    //cout<<i<<" "<<curr<<endl;
    ans++;
    for(int j=i+1; j<60; j++)
    {
        if(curr+p[j]<=s[j]/nd)
            dfs(j,curr+p[j]);
    }
}


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;

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

    //cout<<ans<<endl;
    ////////////////////

    long long sum=0;
    p[0]=1;
    for(long long i=1; i<=125; i++)
    {
        if(1e18/p[i-1]<2)p[i]=1e18+1;
        else p[i]=p[i-1]*2;
        //cout<<p[i]<<endl;
    }
    for(long long i=0;i<a.size();i++)
        sum+=a[i]*p[i];

        //cout<<sum/x<<endl;
    long long ans1=1;
    for(long long g=1;g<=sum/x;g++)
    {
        for(long long i=0;i<a.size();i++)
            h[i]=a[i];
        long long maxx=0,num=0;
        while(num<x)
        {
            long long curr=g;
            for(long long i=a.size()-1;i>=0;i--)
            {
                long long need=min(h[i],curr/p[i]);
                h[i]-=need;
                curr-=need*p[i];
            }
            if(curr!=0)break;
            num++;
        }
        if(num==x)ans1++;
    }
    if(ans1!=ans)
    {
        cout<<x<<endl;
        for(int i=0;i<a.size();i++)
            cout<<a[i]<<" ";
        cout<<endl;
        exit(0);
    }

    return ans;
}

vector<long long> c(10);
void gen()
{
    int k=5;
    int x=rand()%5+2;
    for(int i=0; i<k; i++)
        c[i]=rand()%100;
    cout<<count_tastiness(x,c)<<endl;
}

int main()
{
    while(1)
    {
        gen();
    }
}

Compilation message (stderr)

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:46:22: warning: iteration 64 invokes undefined behavior [-Waggressive-loop-optimizations]
   46 |         if(1e18/p[i-1]<2)p[i]=1e18+1;
      |                 ~~~~~^
biscuits.cpp:44:25: note: within this loop
   44 |     for(long long i=1; i<=125; i++)
      |                        ~^~~~~
/usr/bin/ld: /tmp/ccTdiYTR.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc9JgCth.o:biscuits.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status