Submission #1013389

#TimeUsernameProblemLanguageResultExecution timeMemory
1013389ifateenPacking Biscuits (IOI20_biscuits)C++17
0 / 100
1071 ms604 KiB
#include "biscuits.h"
#include <iostream>
const int MAX = 1e5;
long long count_tastiness(long long x, std::vector<long long> a) {
	if (x > MAX) return 1;
	int n = std::min(19, (int)a.size());
	long long ans = 1, sm = 0;
	for (int i = 0; i < n; ++i) sm += a[i] * (1 << i);
	auto works = [&](int count) -> bool {
		std::vector<long long> cur = a;
		for (int i = n - 1; i >= 0; --i) {
			if (count & (1 << i)) {
				long long tmp = x;
				int j = i, need = 1;
				while (tmp) {
					if (cur[j] < need) {
						j--;
						if (j < 0) return false;
						need <<= 1;
					} else {
						--tmp;
						cur[j] -= need;
					}
				}
			} else continue;
		}
		return true;
	};
	for (int count = 1; count * x <= sm; ++count) {
		ans += works(count);
	}
	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...