Pagini recente » Cod sursa (job #1133679) | Cod sursa (job #733025) | Cod sursa (job #2032080) | Istoria paginii utilizator/badghoul | Cod sursa (job #166585)
Cod sursa(job #166585)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define lg 100005
int n, m, nrmin, nr, i, rezultat, sm;
long long t[lg];
struct camion{
int c, t;
};
camion v[lg];
int check(int val){
int i;
long long sm = 0, t[lg] = {0};
for (i = 1; i <= n; i ++){
t[i] = v[i].c * (val / v[i].t);
sm += t[i];
}
if (sm < m)
return 0;
return 1;
}
int bs(){
int li = 1, ls = 200000000, x, gs = 0;
while (li <= ls){
x = (li+ls) / 2;
if (check(x)){
gs = x;
ls = x-1;
}
else
li = x+1;
}
return gs;
}
int main()
{
freopen("garaj.in", "rt", stdin);
freopen("garaj.out", "wt", stdout);
scanf("%d%d", &n, &m);
for (i = 1; i <= n; i ++){
scanf("%d%d", &v[i].c, &v[i].t);
v[i].t *= 2;
}
rezultat = bs();
for (i = 1; i <= n; i ++)
t[i] = v[i].c * (rezultat / v[i].t);
sort(t+1, t+n+1);
for (i = n; i; i --){
sm += t[i];
if (sm >= m)
break;
}
printf("%d %d\n", rezultat, i);
return 0;
}