Submission #1186817

#TimeUsernameProblemLanguageResultExecution timeMemory
1186817the_coding_poohPacking Biscuits (IOI20_biscuits)C++20
0 / 100
3 ms324 KiB
#include "biscuits.h"
#include <bits/stdc++.h>

using namespace std;

#define uwu return

long long count_tastiness(long long x, vector<long long> a) {
	long long ans = 0;
	while(a.size() < 62){
		a.push_back(0);
	}
	for (int i = 0; i < a.size(); i++){
		vector <long long> b = a;
		for (int j = i + 1; j < a.size(); j++){
			b[j] = 0;
		}
		long long sum = 0;
		for (int j = i; j >= 0; j--){
			if(sum + (b[j] * (1LL << j)) >= x * (1LL << i)){
				b[j] -= ((x * (1LL << i)) - sum) / (1LL << j);
				sum = (x * (1LL << i));
				break;
			}
			else{
				sum += b[j] * (1LL << j);
				b[j] = 0;
			}
		}
		b[i] += sum / (1LL << i);
		if(b[i] < x)
			continue;
		long long cnt = 0;
		for (int j = 0; j <= i - 1; j++){
			if(b[j] >= x){
				b[j + 1] += (b[j] - x) / 2;
				b[j] = x;
				cnt++;
			}
		}
		ans += (1LL << cnt);
	}
	long long ss = 0;
	for (int i = 0; i < a.size(); i++){
		ss += (1LL << i) * a[i];
	}
	return ans + 3 + __builtin_popcountll(ss);
}

#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...