제출 #1240406

#제출 시각아이디문제언어결과실행 시간메모리
1240406Ghulam_JunaidPacking Biscuits (IOI20_biscuits)C++20
0 / 100
1113 ms352228 KiB
#include <bits/stdc++.h> #include "biscuits.h" // #include "grader.cpp" using namespace std; typedef long long ll; map<vector<ll>, ll> memo; vector<ll> nvec; ll f(vector<ll> vec){ if (memo.find(vec) != memo.end()) return memo[vec]; ll sz = vec.size(); if (sz == 0) return memo[vec] = 1; nvec = vec; if (vec.back()){ nvec.pop_back(); return memo[vec] = 2 * f(nvec); } nvec.pop_back(); vector<ll> prv = vec; ll tmp = f(nvec); ll cur = (1ll << (sz - 1)); for (ll i = sz - 2; i >= 0; i --){ if (cur >= (1ll << i) and vec[i]){ ll quo = min(vec[i], cur / (1ll << i)); vec[i] -= quo; cur -= quo * (1ll << i); } } nvec = vec; nvec.pop_back(); if (cur == 0) return memo[prv] = tmp + f(nvec); return memo[prv] = tmp; } ll count_tastiness(ll x, vector<ll> a){ ll k = a.size(); ll ans = 1, sm = 0; for (ll i = 0; i < k; i ++) sm += a[i] * (1ll << i); while (a.size() < 59) a.push_back(0); return f(a); }
#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...