Submission #831202

#TimeUsernameProblemLanguageResultExecution timeMemory
831202Username4132Packing Biscuits (IOI20_biscuits)C++17
100 / 100
11 ms1236 KiB
#include "biscuits.h"
#include<iostream>
#include<vector>
using namespace std;
using ll = long long;
#define forn(i, n) for(int i=0; i<(int)n; ++i)

const int MAXN = 62;
int n;
ll val[MAXN], res[MAXN];

long long count_tastiness(ll x, vector<ll> a) {
	n = (int)a.size();
	ll su=0;
	forn(i, MAXN){
		if(i<n) su+=a[i]*(1LL<<i);
		val[i]=(su/x);
		int cur=i;
		ll ans=0, r=val[i];
		while(true){
			if(cur==0){
				ans+=(r>0)+1;
				break;
			}
			if(r>=(1LL<<(cur+1))-1){
				ans+=2*res[cur-1];
				break;
			}
			if(r>=(1LL<<cur)){
				ans+=res[cur-1];
				r-=(1LL<<cur);
			}
			r = min(r, val[cur-1]);
			--cur;
		}
		res[i]=ans;
	}
	return res[MAXN-1];
}
#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...