Pagini recente » Cod sursa (job #2125798) | Cod sursa (job #887045) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #486722) | Cod sursa (job #2483620)
#include <bits/stdc++.h>
using namespace std;
ifstream in("lapte.in");
ofstream out("lapte.out");
int n,st,dr,m,ans,l;
struct lapte
{
int a,b;
}v[110];
bool verif(int t)
{
int d[110][110]={0};
///nr maxim de litri de A daca beau j litri de B cu i oameni
int s=0;
for(int i=1;i<=n;i++) s+=t/v[i].b;
if(s<l) return 0;
for(int i=0;i<=t/v[1].b;i++) d[1][i]=(t-i*v[1].b)/v[1].a;
for(int i=2;i<=n;i++)
{
for(int j=0;j<=l;j++)
for(int p=0;p<=j;p++)
{
d[i][j]=max(d[i][j],d[i-1][p]+max((t-(j-p)*v[i].b)/v[i].a,0));
}
}
cout<<t<<" "<<d[n][l]<<'\n';
if(d[n][l]>=l) return 1;
return 0;
}
int main()
{
in>>n>>l;
for(int i=1;i<=n;i++)
in>>v[i].a>>v[i].b;
st=0;
dr=100;
ans=110;
while(st<=dr)
{
m=(st+dr)/2;
if(verif(m))
{
ans=min(ans,m);
dr=m-1;
}
else st=m+1;
}
out<<ans;
return 0;
}