Submission #418110

#TimeUsernameProblemLanguageResultExecution timeMemory
418110InternetPerson10Packing Biscuits (IOI20_biscuits)C++17
12 / 100
8 ms360 KiB
#include "biscuits.h" #include <bits/stdc++.h> typedef long long ll; using namespace std; vector<ll> v; vector<ll> k; ll rec(int i, ll x) { // the last x are blocked, find total number of blocked // cout << i << ' ' << x << '\n'; x = max(x, k[i]); // if(x == 0) { // if(i == (int)v.size()) return 0; // return v[i]; // } if(i == 0) { if(v.size() == 0) return x; if(x == 1) return x; return v[i]; } if(x < ((ll)1 << (i))) { return v[i-1] + rec(i-1, x); } return ((ll)1 << (i)) + rec(i-1, x - ((ll)1 << (i))); } long long count_tastiness(long long x, std::vector<long long> a) { vector<ll>().swap(v); vector<ll>().swap(k); ll tot = 0; for(int i = 0; i < 61; i++) { if(i == (int)a.size()) a.push_back(0); tot += ((ll)1 << i)*a[i]; if(tot >= x*((ll)1 << (i+1)) - 1) { k.push_back(0); v.push_back(rec(i, 0)); } else { k.push_back(((ll)1 << (i+1)) - tot/x - 1); v.push_back(rec(i, ((ll)1 << (i+1)) - tot/x - 1)); } // cout << "v[i] is " << v[i] << '\n'; } return ((ll)1 << 61) - v[60]; }
#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...