Submission #1021483

#TimeUsernameProblemLanguageResultExecution timeMemory
1021483j_vdd16Packing Biscuits (IOI20_biscuits)C++17
9 / 100
1083 ms1051184 KiB
#include <algorithm> #include <bitset> #include <cstdint> #include <cstring> #include <iostream> #include <limits.h> #include <math.h> #include <map> #include <numeric> #include <queue> #include <set> #include <stack> #include <string> #include <vector> #define int long long #define ll long long #define loop(X, N) for(int X = 0; X < (N); X++) #define all(V) V.begin(), V.end() #define rall(V) V.rbegin(), V.rend() using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<vector<ii>> vvii; typedef vector<bool> vb; typedef vector<vector<bool>> vvb; int count_tastiness(int x, vi a) { constexpr int N = 60; while (a.size() < N) a.push_back(0); vi pref(N, 0); pref[0] = a[0]; for (int i = 1; i < N; i++) { a[i] *= (1LL << i); pref[i] = pref[i - 1] + a[i]; } /*map<int, int> values = { {0, 1} }; for (int bit = N - 1; bit >= 0; bit--) { map<int, int> nextValues; for (auto [sub, posCount] : values) { nextValues[max(0LL, sub - a[bit])] += posCount; int count = pref[bit] - sub; if (count / (1LL << bit) >= x) nextValues[max(0LL, sub + x * (1LL << bit) - a[bit])] += posCount; } swap(values, nextValues); }*/ vi values = { 0 }; for (int bit = 0; bit < N; bit++) { int sz = values.size(); loop(i, sz) { int& count = values[i]; count += a[bit]; if (count / (1LL << bit) >= x) values.push_back(count - x * (1LL << bit)); } } /*vector<tuple<int, int, int>> values = {{0, 0, 1LL << N}}; for (int bit = N - 1; bit >= 0; bit--) { vector<tuple<int, int, int>> nextValues; for (auto [sub, l, r] : values) { sub = max(0LL, sub); int count = pref[bit] - sub; int m = (l + r) / 2; nextValues.push_back({ sub - a[bit], l, m }); if (count / (1LL << bit) >= x) nextValues.push_back({ sub + x * (1LL << bit) - a[bit], m, r}); } swap(values, nextValues); }*/ return values.size(); }
#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...