Submission #1234208

#TimeUsernameProblemLanguageResultExecution timeMemory
1234208SpyrosAlivPacking Biscuits (IOI20_biscuits)C++20
0 / 100
1 ms320 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long

ll count_tastiness(ll x, vector<ll> a) {
	int k = a.size();
	for (int i = 0; i < k-1; i++) {
		ll extra = a[i] - 1;
		if (extra <= 0) continue;
		a[i+1] += extra / 2LL;
		if (a[i] % 2) a[i] = 1;
		else a[i] = 2;
	}
	for (int i = 0; i < k; i++) assert(a[i] <= 2);
	vector<ll> po(k);
	po[0] = 1LL;
	for (int i = 1; i < k; i++) po[i] = po[i-1] * 2LL;
	vector<vector<ll>> dp(k, vector<ll>(2, 0LL));
	if (a[0]) {
		dp[0][0] = dp[0][1] = 1;
	}
	else {
		dp[0][0] = 1;
		dp[0][1] = 0;
	}
	for (int i = 1; i < k; i++) {
		if (a[i]) {
			dp[i][0] = dp[i-1][0] + dp[i-1][1];
			dp[i][1] = dp[i-1][0] + dp[i-1][1];
		}
		else {
			dp[i][0] = dp[i-1][0] + dp[i-1][1];
			for (int j = i-1; j >= 0; j--) {
				if (a[j] == 0) break;
				if (a[j] == 1) continue;
				dp[i][1] += dp[j][0];
			}
		}
	}
	return dp[k-1][0] + dp[k-1][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...