Pagini recente » Cod sursa (job #566635) | Cod sursa (job #1889039) | Cod sursa (job #1620981) | Cod sursa (job #2240799) | Cod sursa (job #322844)
Cod sursa(job #322844)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct che{long x,t;}a[100050];
long n,m,i,nr,xss;
double xs;
long long maxx,t,st,dr,mi,s;
long cmp(che a,che b)
{if(t/a.t*a.x>t/b.t*b.x)return 1;
return 0;}
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",&a[i].x,&a[i].t);
a[i].t*=2;
maxx+=(a[i].x/a[i].t);
xs+=(a[i].x/a[i].t);
}
xss=xs;
st=m/xss-5;dr=m/maxx+5;
while(st<=dr)
{mi=st+((dr-st)>>1);
s=0;
for(i=1;i<=n;++i)
s+=(a[i].x*(mi/a[i].t));
if(s>=m)
{t=mi;dr=mi-1;}
else st=mi+1;}
sort(a+1,a+n+1,cmp);
for(i=1;i<=n&&m>0;++i,++nr)
m-=(t/a[i].t*a[i].x);
printf("%lld %ld\n",t,nr);
return 0;
}