Pagini recente » Cod sursa (job #1818734) | Cod sursa (job #605158) | Cod sursa (job #2289700) | Cod sursa (job #2716860) | Cod sursa (job #139170)
Cod sursa(job #139170)
#include <stdio.h>
#include <algorithm>
#define inf 1000000000
using namespace std;
long n,m,i,c[100002],t[100002];
long low,mid,high;
long long cap,s,v[100002];
int main(){
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
scanf("%ld %ld",&n,&m);
for (i=1;i<=n;i++){
scanf("%ld %ld",&c[i],&t[i]);
}
low=1;
high=inf+1;
while (low<high){
mid = (low + high)/2;
cap=0;
for (i=1;i<=n;i++)
cap=(long long)cap+(mid/(2*t[i]))*c[i];
if (cap <(long long) m)
low = mid + 1;
else
high = mid;
}
cap=0;
for (i=1;i<=n;i++)
cap=(long long)cap+(low/(2*t[i]))*c[i];
if (low<=inf & cap ==(long long)m)
printf ("%ld %ld\n",low,n);
else{
printf ("%ld ",low);
for (i=1;i<=n;i++)
v[i]=(long long)(low/(2*t[i]))*c[i];
sort(v+1,v+n+1);
s=0;
for (i=1;i<=n;i++){
s=(long long)s+v[i];
if (s>cap-m)break;
}
printf("%ld\n",n-i+1);
}
return 0;
}