Pagini recente » Cod sursa (job #675432) | Cod sursa (job #380092) | Istoria paginii utilizator/volomi | Cod sursa (job #2728080) | Cod sursa (job #1112848)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE*f=fopen("garaj.in", "r");
FILE*g=fopen("garaj.out", "w");
long long n, m, i, s, d, p, u, mi, a[100010], t, nrc;
struct camion{
long long s, t;
} v[100010];
bool verif(long long t){
s=m;
for(i=1; i<=n; i++)
{
s-=(t/(v[i].t<<1))*v[i].s;
if(s<1)
return 1;
}
return 0;
}
bool cmp(camion x, camion y){
return ( (x.s/x.t)>(y.s/y.t) );
}
int main(){
fscanf(f, "%lld %lld", &n, &m);
for(i=1; i<=n; i++)
fscanf(f, "%lld %lld", &v[i].s, &v[i].t);
p=1;
u=2LL*m;
while(p<=u)
{
mi=p+(u-p)/2;
if( verif(mi) )
u=mi-1;
else
p=mi+1;
}
t=p;
for(i=1; i<=n; i++)
a[i]=(t/(v[i].t<<1))*v[i].s;
sort(a+1, a+n+1);
s=m;
for(i=n; i>0; i--)
{
s-=a[i];
nrc++;
if(s<1)
break;
}
fprintf(g, "%lld %lld\n", p, nrc);
return 0;
}