# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
871389 | andrei_boaca | Packing Biscuits (IOI20_biscuits) | C++17 | 36 ms | 1568 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "biscuits.h"
#include <bits/stdc++.h>
//#include "grader.cpp"
using namespace std;
typedef long long ll;
ll f[65],ans,lg[65];
vector<ll> secv[65];
vector<ll> compress(vector<ll> a)
{
vector<ll> aux;
ll L=0;
for(auto i:a)
{
if(i<0)
L+=abs(i);
else
{
if(L!=0)
aux.push_back(-L);
aux.push_back(i);
}
}
if(L!=0)
aux.push_back(-L);
return aux;
}
vector<ll> elim(vector<ll> a, ll nr)
{
ll init=nr;
ll taken=0;
while(nr>0)
{
ll p=a.back();
ll L=-1;
if(p<0)
L=abs(p);
else
L=(1LL<<p);
if(L<=nr)
{
nr-=L;
taken+=L;
a.pop_back();
continue;
}
if(p<0)
break;
vector<ll> aux=elim(secv[p],nr);
a.pop_back();
for(auto i:aux)
a.push_back(i);
break;
}
if(taken>0)
a.push_back(-taken);
//a=compress(a);
return a;
}
long long count_tastiness(long long x, std::vector<long long> a)
{
for(int i=0;i<=60;i++)
{
f[i]=0;
lg[i]=0;
}
for(int i=0;i<a.size();i++)
f[i+1]=a[i];
lg[0]=1;
ll suma=0;
for(ll i=1;i<=60;i++)
{
lg[i]=0;
suma+=(1LL<<(i-1))*f[i];
secv[i].clear();
secv[i]={i-1,i-1};
ll maxim=suma/x;
ll dr=(1LL<<i)-1;
if(maxim<dr)
{
ll out=dr-maxim;
secv[i]=elim(secv[i],out);
}
ll mylg=0;
for(auto j:secv[i])
{
if(j>=0)
{
lg[i]+=lg[j];
mylg+=(1LL<<j);
}
else
mylg+=abs(j);
}
//assert(mylg==(1LL<<i));
}
return lg[60];
}
Compilation message (stderr)
# | 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... |