Pagini recente » Cod sursa (job #1972674) | Cod sursa (job #202205) | Istoria paginii runda/chestii | Cod sursa (job #596584) | Cod sursa (job #1569642)
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct om
{
int v1,v2;
bool operator < (const om &t) const
{
if(t.v1==v1) return t.v2<v2;
return t.v1>v1;
}
} pers[101];
int n,l;
int sol[2][101];
int isok(int tmp)
{
int i,c1=0,c2=0,ca1=0,ca2=0;
//cout<<tmp<<'\n';
for(i=1;i<=n;i++)
{
// cout<<c1<<' '<<c2<<" ";
if(c1>=l) { ca2=tmp/pers[i].v2; c2+=ca2; sol[1][i]=ca2; }
else
{
if(l-c1 >= tmp/pers[i].v1) { ca1=tmp/pers[i].v1; c1+=ca1; sol[0][i]=ca1; }
else
{
sol[0][i]=l-c1;
ca2=(tmp-(l-c1)*pers[i].v1)/pers[i].v2;
c1=l;
c2+=ca2; sol[1][i]=ca2;
}
}
//cout<<c1<<' '<<c2<<'\n';
}// cout<<'\n';
if(c1>=l && c2>=l) return 1;
else return 0;
}
int main()
{
freopen("lapte.in","r",stdin);
freopen("lapte.out","w",stdout);
int poz,lc,i;
cin>>n>>l;
for(i=1;i<=n;i++) cin>>pers[i].v1>>pers[i].v2;
for(poz=1;poz<100;poz<<=1);
sort(pers+1,pers+n+1);
for(i=100,lc=poz; lc; lc>>=1)
{
//cout<<lc<<' '<<i<<'\n';
if(i-lc>0 && isok(i-lc) ) i-=lc;
}
cout<<i<<'\n';
return 0;
}