From bd6d55f622959b71631e8394b980269df5f7a1d4 Mon Sep 17 00:00:00 2001 From: Kaushik Narayan R Date: Sat, 4 Nov 2023 11:44:18 -0700 Subject: [PATCH] day 32: 875-koko-eating-bananas --- 875-koko-eating-bananas/driver.cpp | 10 +++++++ 875-koko-eating-bananas/soln.cpp | 44 ++++++++++++++++++++++++++++++ 875-koko-eating-bananas/soln.hpp | 8 ++++++ 3 files changed, 62 insertions(+) create mode 100644 875-koko-eating-bananas/driver.cpp create mode 100644 875-koko-eating-bananas/soln.cpp create mode 100644 875-koko-eating-bananas/soln.hpp diff --git a/875-koko-eating-bananas/driver.cpp b/875-koko-eating-bananas/driver.cpp new file mode 100644 index 0000000..7939d8a --- /dev/null +++ b/875-koko-eating-bananas/driver.cpp @@ -0,0 +1,10 @@ +#include "soln.hpp" + +int main() +{ + vector piles{30, 23, 11, 4, 20}; + int h = 5, answer = 30; + Solution soln; + cout << "Found minimum k correctly? " << soln.test(piles, h, answer) << endl; + return 0; +} \ No newline at end of file diff --git a/875-koko-eating-bananas/soln.cpp b/875-koko-eating-bananas/soln.cpp new file mode 100644 index 0000000..90f73a5 --- /dev/null +++ b/875-koko-eating-bananas/soln.cpp @@ -0,0 +1,44 @@ +#include "soln.hpp" + +int Solution::minEatingSpeed(vector &piles, int h) +{ + if (piles.size() < 2) + { + // cout << double(piles[0]/double(h)) << " " << ceil(piles[0]/double(h)) << endl; + return ceil(piles[0] / double(h)); + } + long k_lmin = 0; + int k_max = 1; + int k_mid, hours_for_k_mid; + for (int pile : piles) + { + k_max = max(k_max, pile); + k_lmin += pile; + } + k_lmin /= h; + int k_min = k_lmin; + while (k_min < k_max) + { + k_mid = (k_min + k_max) / 2; + hours_for_k_mid = 0; + for (int pile : piles) + { + // cout << pile << " " << k_mid << endl; + hours_for_k_mid += ceil(pile / double(k_mid)); + } + if (hours_for_k_mid > h) + { + k_min = k_mid + 1; + } + else + { + k_max = k_mid; + } + } + return k_min; +} + +bool Solution::test(vector &piles, int h, int answer) +{ + return minEatingSpeed(piles, h) == answer; +} \ No newline at end of file diff --git a/875-koko-eating-bananas/soln.hpp b/875-koko-eating-bananas/soln.hpp new file mode 100644 index 0000000..544060e --- /dev/null +++ b/875-koko-eating-bananas/soln.hpp @@ -0,0 +1,8 @@ +#include +using namespace std; +class Solution +{ +public: + int minEatingSpeed(vector &piles, int h); + bool test(vector &piles, int h, int answer); +}; \ No newline at end of file