Submission #1205971

#TimeUsernameProblemLanguageResultExecution timeMemory
1205971banganPacking Biscuits (IOI20_biscuits)C++20
12 / 100
0 ms328 KiB
#include "biscuits.h"
#include <bits/stdc++.h>

using i64 = long long;

long long count_tastiness(long long x, std::vector<long long> a) {
	assert(x == 1);

	for (int i = 0; i < a.size(); i++) {
		if (i + 1 == a.size() && a[i] > 2) {
			a.push_back(0);
		}
		if (a[i] > 2) {
			i64 t = (a[i] - 1) / 2;
			a[i] -= 2 * t;
			a[i + 1] += t;
		}
	}
	
	int k = a.size();
	i64 ans = 1;

	for (int l = 0; l < k;) {
		if (!a[l]) {
			l++;
			continue;
		}

		int r = l;
		while (r < k && a[r] > 0) {
			r++;
		}

		i64 ways = 1;
		for (int i = l; i < r; i++) {
			ways += (1LL << i - l) * a[i];
		}
		ans *= ways;
		l = r;
	}
	return ans;
}

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