Submission #623915

#TimeUsernameProblemLanguageResultExecution timeMemory
623915ollel비스킷 담기 (IOI20_biscuits)C++17
33 / 100
867 ms2097152 KiB
using namespace std;
#include <bits/stdc++.h>

#include "biscuits.h"

typedef vector<int> vi;
typedef vector<vi> vvi;
typedef long long ll;
typedef vector<bool> vb;
typedef pair<int,int> pii;

#define rep(i,a,b) for(int i = a; i < b; i++)
#define pb push_back


ll count_tastiness(ll x, vector<ll> a) {
	int k = a.size() + 100;
	rep(i,0,k) a.pb(0);

	rep(i,0,k-1) {
		if (a[i] <= x) continue;

		a[i + 1] += (a[i] - x) / 2;
		a[i] = x + ((a[i] - x) & 1);
	}

	vector<vector<ll>> dp(k, vector<ll>(2*x+6, 0));
	dp[0][a[0]] = 1;
	if (a[0] >= x) dp[0][a[0] - x] = 1;

	rep(i,0,k-1) rep(j,0,2*x+6) {
		dp[i+1][a[i+1] + j/2] += dp[i][j];
		if (a[i+1] + j/2 >= x) dp[i+1][a[i+1] + j/2 - x] += dp[i][j];
	}

	ll ans = 0;
	rep(j,0,2*x+6) ans += dp[k-1][j];

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