제출 #1137041

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

#define int long long
map<int, int> dp;
int s[63], n;

int f(int x) {
	if (x <= 0) return 0;
	if (x == 1) return 1;
	if (dp.count(x)) return dp[x];
	int k = floor(log2l(x-1));
	dp[x] = f(1LL << k) + f(min(x, s[k] / n + 1) - (1LL << k));
	// cout << x << " " << (1 << k) << " " << min(x, s[k] / x + 1) dp[x] << '\n';
	return dp[x];
}

int count_tastiness(int x, vector<int> a) {
	dp.clear();
	n = x;
	while (a.size() < 63) a.push_back(0);
	for (int i = 0; i < 63; i++) s[i] = (!i ? 0 : s[i-1]) + a[i] * (1LL << i);
	return f(s[62] + 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...