Pagini recente » Cod sursa (job #1578348) | Cod sursa (job #1455026) | Cod sursa (job #1394868) | Cod sursa (job #1522537) | Cod sursa (job #304137)
Cod sursa(job #304137)
#include <stdio.h>
#include <algorithm>
using namespace std;
int p[100010],cap[100010],timp[100010];
int i,n,m,sol,s;
int cmp(int i, int j)
{
return (timp[i]<timp[j] || ( timp[i]==timp[j] && cap[i]<cap[j] ) );
}
void cbin(int st, int dr)
{
int mid,suma;
while (st<=dr){
mid=(st+dr)/2;
suma=0;
for (i=1;i<=n;i++)
suma += mid/timp[i] * cap[i];
if (suma>=m){
sol=mid;
dr=mid-1;
}
else st=mid+1;
}
}
int main ()
{
freopen ("garaj.in","r",stdin);
freopen ("garaj.out","w",stdout);
scanf ("%d %d",&n,&m);
for (i=1;i<=n;i++) scanf ("%d %d",&cap[i],&timp[i]);
for (i=1;i<=n;i++) p[i]=i;
sort (p+1,p+n+1,cmp);
cbin (1, 400000000);
printf ("%d ",2*sol);
for (i=1;i<=n;i++){
s += sol/timp[p[i]] * cap[p[i]];
if (s>=m) break;
}
printf ("%d\n",i);
return 0;
}