Pagini recente » Cod sursa (job #2850617) | Cod sursa (job #1098142) | Cod sursa (job #548926) | Cod sursa (job #2683683) | Cod sursa (job #328206)
Cod sursa(job #328206)
#include<algorithm>
using namespace std;
#define DIM 100001
struct garaj
{
int c,t;
};
garaj a[DIM];
int n,m,dr;
void read ()
{
int i,nr;
dr=100000001;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
{
scanf("%d%d",&a[i].c,&a[i].t);
a[i].t*=2;
if(m%a[i].c!=0)
nr=(m/a[i].c+1)*a[i].t;
else
nr=(m/a[i].c)*a[i].t;
if(nr<dr)
dr=nr;
}
}
int check (int sol)
{
int sum=0,i;
for(i=1;i<=n;++i)
sum+=(sol/a[i].t)*a[i].c;
if(sum<m)
return 1;
return 0;
}
void show (int tmin)
{
int nrmin,nr[DIM],i;
for(i=1;i<=n;++i)
nr[i]=(tmin/a[i].t)*a[i].c;
sort(nr+1,nr+n+1);
for(i=n;i>0;--i)
{
m-=nr[i];
if(m<=0)
{
nrmin=n-i+1;break;
}
}
printf("%d %d",tmin,nrmin);
}
void solve ()
{
int st=1,mij,nr,sol=dr;
while(st<=dr)
{
mij=(st+dr)/2;
nr=check(mij);
if(nr==0)
{
dr=mij-1;
sol=mij;
}
else
st=mij+1;
}
show (sol);
}
int main ()
{
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
read ();
solve ();
return 0;
}