Pagini recente » Cod sursa (job #1388257) | Cod sursa (job #1913020) | Cod sursa (job #2591756) | Cod sursa (job #3192531) | Cod sursa (job #304136)
Cod sursa(job #304136)
#include <stdio.h>
#include <algorithm>
using namespace std;
long long p[100010],cap[100010],timp[100010];
long long 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(long long st, long long dr)
{
long long 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, 1000000000);
printf ("%lld ",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;
}