Pagini recente » Cod sursa (job #2866560) | Cod sursa (job #2488873) | Cod sursa (job #26935) | Cod sursa (job #2976970) | Cod sursa (job #3190926)
#include <fstream>
#define INF 0x3FFFFFFF
using namespace std;
ifstream fin("lapte.in");
ofstream fout("lapte.out");
int d[2][105];
int n,l;
struct om{
int a;
int b;
}v[105];
bool good(int val)
{
int t = 1;
for(int i=0;i<=1;i++)
for(int j = 0;j<=l;j++)
d[i][j] = -INF;
d[0][0]=0;
for(int i=1;i<=n;i++,t=1-t)
for(int astart = 0;astart<=l;astart++)
for(int x = 0;astart + x <=l;x++)
{
if(v[i].a * x > val)
break;
int badd = (val - v[i].a * x)/v[i].b;
d[t][astart + x] = max(d[t][astart + x],d[1-t][astart] + badd);
}
return d[1-t][l]>=l;
}
int cb()
{
int st = 1;
int dr = 100;
int sl = 0;
while(st<=dr)
{
int mid = (st+dr)/2;
if(good(mid))
sl=mid,dr=mid-1;
else
st=mid+1;
}
return sl;
}
int main()
{
fin>>n>>l;
for(int i=1;i<=n;i++)
fin>>v[i].a>>v[i].b;
int rez = cb();
fout<<rez;
}