제출 #1320102

#제출 시각아이디문제언어결과실행 시간메모리
1320102nicolo_010비스킷 담기 (IOI20_biscuits)C++20
42 / 100
62 ms48224 KiB
#include <bits/stdc++.h>
#include "biscuits.h"
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define f first
#define s second

const int mX = 1e5+5;

ll dp[61][mX];
vector<ll> a;
ll x;

ll f(int i, int w) {
	if (i==60) return 1;
	if (dp[i][w] != -1) return dp[i][w];
	ll caso1 = f(i+1, (w+a[i])/2);
	ll caso2=0;
	if (w+a[i]>=x) caso2 = f(i+1, (w+a[i]-x)/2);
	return dp[i][w] = caso1+caso2;
}

ll count_tastiness(ll X, vector<ll> A) {
	x = X, a = A;
	while (a.size()<61) a.push_back(0);
	for (int i=0; i<60; i++) {
		if (a[i]>x+1) {
			a[i+1] += (a[i]-x)/2;
			a[i] -= ((a[i]-x)/2)*2;
		}
	}
	memset(dp, -1, sizeof(dp));
	return f(0, 0);
}
#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...