Pagini recente » Cod sursa (job #2317535) | Cod sursa (job #2523983) | Cod sursa (job #1876867) | Cod sursa (job #2172665) | Cod sursa (job #2483681)
#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];
int d[110][110];
bool verif(int t)
{
memset(d, -0x3f, sizeof(d)); ///-
///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 <= l ; 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=j;p>=0&&t-(j-p)*v[i].b>0;p--)
d[i][j]=max(d[i][j],d[i-1][p]+(t-(j-p)*v[i].b) / v[i].a);
}
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<<st;
return 0;
}