(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #612581

#TimeUsernameProblemLanguageResultExecution timeMemory
612581skittles1412Packing Biscuits (IOI20_biscuits)C++17
100 / 100
64 ms1320 KiB
#include "bits/extc++.h" using namespace std; template <typename T> void dbgh(const T& t) { cerr << t << endl; } template <typename T, typename... U> void dbgh(const T& t, const U&... u) { cerr << t << " | "; dbgh(u...); } #ifdef DEBUG #define dbg(...) \ cerr << "L" << __LINE__ << " [" << #__VA_ARGS__ << "]: "; \ dbgh(__VA_ARGS__); #else #define dbg(...) #define cerr \ if (false) \ cerr #endif using ll = long long; #define endl "\n" #define long int64_t #define sz(x) int((x).size()) long k; map<long, long> memo; vector<long> arr, psum; long dp(long x) { if (!x) { return 1; } auto [it, inserted] = memo.emplace(x, 0); if (!inserted) { return it->second; } int bit = __lg(x); long ans = dp((long(1) << bit) - 1); if ((psum[bit] >> bit) >= k) { ans += dp(min(x - (long(1) << bit), (psum[bit] - (k << bit)) / k)); } return it->second = ans; } ll count_tastiness(ll _k, vector<ll> _arr) { k = _k; arr.clear(); arr.resize(64); copy(begin(_arr), end(_arr), arr.begin()); psum.resize(64); long cpsum = 0; for (int i = 0; i < 64; i++) { psum[i] = cpsum += arr[i] << i; } memo.clear(); dbg(dp(0), dp(1), dp(2), dp(3), dp(4), dp(5), dp(6)); return dp(long(1) << 62); }
#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...