Pagini recente » Cod sursa (job #954765) | Cod sursa (job #1238982) | Cod sursa (job #199234) | Cod sursa (job #388193) | Cod sursa (job #1647877)
#include <cstdio>
#include<algorithm>
#define MAX 100000
using namespace std;
struct aa{
int c, t;
}; aa v[MAX+1];
bool cresc(aa a, aa b){
return ((1.0*a.c/a.t)>=(1.0*b.c/b.t));
}
int n;
inline int ok(long long timp, long long m)
{
long long i, x=0;
for(i=1;i<=n;i++)
x+=timp/(v[i].t*2)*v[i].c;
if(x>=m)
return 1;
return 0;
}
int main()
{
freopen("garaj.in", "r", stdin);
freopen("garaj.out","w", stdout);
int i, maxi=-1, s=0;
long long m, st, dr, mij, mintime, x=0;
scanf("%d%lld", &n, &m);
for(i=1;i<=n;i++){
scanf("%d%d", &v[i].c, &v[i].t);
if(maxi<v[i].t)
maxi=v[i].t;
}
sort(v+1, v+n+1, cresc);
dr=maxi*m;
mintime=dr+1;
st=1;
while(st<=dr)
{
mij=(st+dr)/2;
if(ok(mij, m))
{
if(mij<mintime)
mintime=mij;
dr=mij-1;
}
else st=mij+1;
}
printf("%lld ", mintime);
i=1;
while(x<m)
{
x+=mintime/(v[i].t*2)*v[i].c;
i++;
s++;
}
printf("%d", s);
return 0;
}