Submission #547517

#TimeUsernameProblemLanguageResultExecution timeMemory
547517LucaDantasPacking Biscuits (IOI20_biscuits)C++17
44 / 100
175 ms3768 KiB
#include "biscuits.h"
#include <cassert>
#include <algorithm>
#include <cstdio>

long long count_tastiness(long long x, std::vector<long long> a) {
	std::vector<long long> val(200000);
	int pos = 1;

	while(a.size() < 60) a.push_back(0);
	for(int i = 1; i < (int)a.size(); i++)
		a[i] = (1ll << i) * a[i] + a[i-1];

	for(int i = 0; i < 60; i++) {
		long long pot = (1ll << i);
		int last = std::upper_bound(val.begin(), val.begin()+pos, a[i] / x - (1ll << i)) - val.begin();
		/* printf("%d %d\n", last, pos);
		fflush(stdout); */
		// assert(last <= pos);
		for(int j = 0; j < last; j++)
			val[pos++] = val[j]|pot;
	}

	return pos;
}
#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...