day 32: 875-koko-eating-bananas

This commit is contained in:
Kaushik Narayan R 2023-11-04 11:44:18 -07:00
parent a0dadd9563
commit bd6d55f622
3 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,10 @@
#include "soln.hpp"
int main()
{
vector<int> 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;
}

View File

@ -0,0 +1,44 @@
#include "soln.hpp"
int Solution::minEatingSpeed(vector<int> &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<int> &piles, int h, int answer)
{
return minEatingSpeed(piles, h) == answer;
}

View File

@ -0,0 +1,8 @@
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
int minEatingSpeed(vector<int> &piles, int h);
bool test(vector<int> &piles, int h, int answer);
};