Pagini recente » Cod sursa (job #1417219) | Cod sursa (job #463894) | Cod sursa (job #325616) | Cod sursa (job #2466237) | Cod sursa (job #1647909)
#include <cstdio>
#include<algorithm>
#define MAX 100000
#define LIM 100000000
using namespace std;
struct aa{
int c, t;
double f;
}; aa v[MAX+1];
bool cresc(aa a, aa b){
return a.f>=b.f;
}
int n;
inline int ok(long long timp, long long m)
{
long long i=1, x=0;
while(x<m&&i<=n){
x+=timp/(v[i].t*2)*v[i].c;
i++;
}
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);
v[i].f=1.0*v[i].c/v[i].t;
if(maxi<v[i].t)
maxi=v[i].t;
}
sort(v+1, v+n+1, cresc);
dr=LIM;
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;
}