제출 #607640

#제출 시각아이디문제언어결과실행 시간메모리
607640skittles1412비스킷 담기 (IOI20_biscuits)C++17
42 / 100
1082 ms33600 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()) struct chash { uint64_t operator()(uint64_t x) const { x ^= x >> 31; x ^= x << 17; x ^= x >> 23; return x; } }; const int maxn = 300; int n; long k, arr[maxn]; __gnu_pbds::gp_hash_table<long, long, chash> memo[maxn]; long dp(int ind, long prev) { if (ind >= n && prev < k) { return 1; } auto it = memo[ind].find(prev); if (it != memo[ind].end()) { return it->second; } long cur = arr[ind] + prev; long ans = dp(ind + 1, cur / 2); if (cur >= k) { ans += dp(ind + 1, (cur - k) / 2); } return memo[ind][prev] = ans; } ll count_tastiness(ll _k, vector<ll> _arr) { k = _k; n = sz(_arr); memset(arr, 0, sizeof(arr)); copy(begin(_arr), end(_arr), arr); for (auto& a : memo) { a.clear(); } return dp(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...