제출 #1240454

#제출 시각아이디문제언어결과실행 시간메모리
1240454AMnu비스킷 담기 (IOI20_biscuits)C++20
100 / 100
12 ms840 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int LOG = 61;
const ll l = 1;

ll dp[LOG], mx[LOG], sum, m;

ll count_tastiness(ll x,vector<ll> a) {
	dp[0] = 1;
	sum = a[0];
	for (int i=1;i<LOG;i++) {
		mx[i] = sum / x + 1;
		if (i < (int)a.size()) {
			sum += a[i]<<i;
		}
		if (mx[i] >= (l<<i)) {
			dp[i] = 2*dp[i-1];
			continue;
		}
		dp[i] = 0;
		m = mx[i];
		for (int j=i-1;j>=0;j--) {
			if ((m>>j)&l) {
				dp[i] += dp[j];
				m ^= l<<j;
			}
			m = min(m, mx[j]);
		}
	}
	return dp[LOG-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...