Submission #1035894

#TimeUsernameProblemLanguageResultExecution timeMemory
1035894Mr_HusanboyPacking Biscuits (IOI20_biscuits)C++17
21 / 100
1071 ms63316 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define all(a) (a).begin(), (a).end() #define ff first #define ss second template<typename T> int len(T &a){return a.size();} mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); vector<ll> cnt; ll x; map<pair<ll,ll>,ll> mp; ll count(int i, ll j){ if(i == 61){ return 1; } if(mp.count({i, j})) return mp[{i, j}]; ll res = 0; res += count(i + 1, (j + cnt[i]) / 2); if(j + cnt[i] >= x){ res += count(i + 1, (j - x + cnt[i]) / 2); } return mp[{i, j}] = res; } long long count_tastiness(long long X, vector<long long> A) { cnt = A; mp.clear(); x = X; while(len(cnt) < 61){ cnt.push_back(0); } for(int i = 0; i + 1 < 61; i ++){ if(cnt[i] >= x + 1){ if((cnt[i] - x) % 2 == 0){ cnt[i + 1] += (cnt[i] - x) / 2; cnt[i] = x; }else{ cnt[i + 1] += (cnt[i] - x - 1) / 2; cnt[i] = x + 1; } } } return count(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...