Pagini recente » Cod sursa (job #2915261) | Cod sursa (job #244241) | Cod sursa (job #630057) | Cod sursa (job #1118613) | Cod sursa (job #1112171)
#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;
struct camion{
long long s, t;
} v[100010];
bool verif(long long t){
s=0;
for(i=1; i<=n; i++)
{
d=t/(v[i].t*2);
s+=v[i].s*d;
if(s>=m)
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);
sort(v+1, v+n+1, cmp);
p=1;
u=1152921504606846976;
while(p<=u)
{
mi=(p+u)/2;
if( verif(mi) )
u=mi-1;
else
p=mi+1;
}
s=0;
for(i=1; i<=n; i++)
{
d=p/(v[i].t*2);
s+=v[i].s*d;
if(s>=m)
break;
}
fprintf(g, "%lld ", p);
fprintf(g, "%lld\n", i);
return 0;
}