Pagini recente » Cod sursa (job #293835) | Cod sursa (job #2474479) | Cod sursa (job #2068946) | Cod sursa (job #2222879) | Cod sursa (job #166574)
Cod sursa(job #166574)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define lg 100005
int n, m, nrmin, nr, i, rezultat;
struct camion{
int c, t;
};
camion v[lg];
int check(int val){
int i, t[lg] = {0}, sm = 0;
for (i = 1; i <= n; i ++)
t[i] = v[i].c * (val / (v[i].t*2));
sort(t+1, t+n+1);
for (i = n; i; i --){
sm += t[i];
if (sm >= m)
break;
}
if (!i)
return 0;
nr = n-i+1;
return 1;
}
int bs(){
int li = 1, ls = 2000000000, x, gs = 0;
while (li <= ls){
x = (li+ls) / 2;
if (check(x)){
gs = x, nrmin = nr;
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);
rezultat = bs();
printf("%d %d\n", rezultat, nrmin);
return 0;
}