Pagini recente » Cod sursa (job #322376) | Cod sursa (job #1679351) | Cod sursa (job #1348530) | Cod sursa (job #1653111) | Cod sursa (job #1778054)
#include <cstdio>
#include <algorithm>
#define INF 1LL<<37
#define NMax 100000
#define ll long long
using namespace std;
int x[NMax+1];
int y[NMax+1];
int N,M,nr;
ll v[NMax+1];
bool is_good(ll X)
{
int i;
ll sum=0;
for(i = 1; i <= N; ++i)
{
v[i] = 1LL * x[i] * ( X / ( 2 * y[i] ) );
sum = sum + v[i];
if( sum >= M ) return 1;
}
return 0;
}
int main(){
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
int i;
ll sum,st,dr,mid,T;
scanf("%d %d",&N,&M);
for(i = 1; i <= N; ++i) scanf("%d %d", &x[i], &y[i]);
for(st = 1, dr = INF; st <= dr; )
{
mid = (st+dr)>>1;
if( is_good(mid) ) { T = mid; dr = mid - 1; }
else st = mid + 1;
}
for(i = 1; i <= N; ++i) v[i] = 1LL * x[i] * ( T / ( 2 * y[i] ) );
sort(v+1,v+N+1);
sum = M;
for(i = N; i >= 1 && sum > 0 ; --i) sum = sum - v[i];
nr = N-i;
printf("%lld %d\n", T, nr);
return 0;
}