Building Boxes LeetCode solution in C++
1class Solution {2private:3int getLayerSize(int x) {4return x * (x + 1) / 2;5}6int getCubeSize(int x) {7long d = static_cast<long>(x);8long sz = (d * (d + 1) * (d + 2)) / 6;9return static_cast<int>(sz);10}1112public:13int minimumBoxes(int n) {14// First Binary Search15int l(0), r(2000), m;16while (l <= r) {17m = (l + r) / 2;18int sz = getCubeSize(m);19if (sz <= n)20l = m + 1;21else22r = m - 1;23}24int aSideOfPyramid = r;25int rest = n - getCubeSize(aSideOfPyramid);2627// Second Binary Search28l = 0, r = 2000;29while (l <= r) {30m = (l + r) / 2;31int sz = getLayerSize(m);32if (sz < rest)33l = m + 1;34else35r = m - 1;36}37int addedFloorCubic = l;3839return getLayerSize(aSideOfPyramid) + addedFloorCubic;40}41};