➤ Problem Link : MKUHAR
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
pair<int,int> ingr[101];
pair<int,int> small[101];
pair<int,int> large[100];
bool f(ll serve,ll n,ll m)
{
ll value=0;
for(int i=1;i<=n;i++)
{
ll req=(ingr[i].first*serve)-ingr[i].second;
ll cost=0;
while(req>0)
{
if(ceil((double)req/small[i].first)*small[i].second < ceil((double)req/large[i].first)*large[i].second)
{
req-=small[i].first;
cost+=small[i].second;
value+=small[i].second;
}
else
{
req-=large[i].first;
cost+=large[i].second;
value+=large[i].second;
}
}
if(value>m)
{
if(serve==5)
cout<<value;
return false;
}
}
return true;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>ingr[i].first>>ingr[i].second>>small[i].first>>small[i].second>>large[i].first>>large[i].second;
ll low=0;
ll high=m;
ll mid;
while(low<high)
{
// cout<<low<<" "<<high<<endl;
mid=low+(high-low+1)/2;
if(f(mid,n,m))
low=mid;
else
high=mid-1;
}
cout<<high<<endl;
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
