#include <bits/stdc++.h>
using namespace std;
bool check(int K, int n, int m,
vector<int> arr,
int good_share)
{
int candies = n, taken = 0;
while (candies > 0) {
taken += min(K, candies);
candies -= min(K, candies);
for (int j = 0; j < m; j++) {
int consume = (arr[j] * candies) / 100;
candies -= consume;
}
}
return (taken >= good_share);
}
void minimumK(vector<int> &arr, int N,
int M)
{
int good_share = ceil((N * 1.0)
/ ((M + 1) * 1.0));
int lo = 1, hi = N;
while (lo < hi) {
int mid = (lo + hi) / 2;
if (check(mid, N, M, arr,
good_share)) {
hi = mid;
}
else {
lo = mid + 1;
}
}
cout << hi;
}
int main()
{
int N = 13, M = 1;
vector<int> arr = { 50 };
minimumK(arr, N, M);
return 0;
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment