Pagini recente » Cod sursa (job #2562674) | Cod sursa (job #1623385) | Cod sursa (job #1853089) | Cod sursa (job #321129) | Cod sursa (job #1112850)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE*f=fopen("garaj.in", "r");
FILE*g=fopen("garaj.out", "w");
int n, m, i, s, d, p, u, mi, a[100010], t, nrc;
struct camion{
int s, t;
} v[100010];
bool verif(int 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, "%d %d", &n, &m);
for(i=1; i<=n; i++)
fscanf(f, "%d %d", &v[i].s, &v[i].t);
p=1;
u=2*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, "%d %d\n", p, nrc);
return 0;
}