mirror of
https://github.com/20kaushik02/leetcode-gulag.git
synced 2025-12-06 06:14:07 +00:00
44 lines
827 B
C++
44 lines
827 B
C++
#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;
|
|
} |