Pagini recente » Cod sursa (job #1604548) | Cod sursa (job #1176512) | Cod sursa (job #1293813) | Istoria paginii runda/cnrv_1 | Cod sursa (job #1568359)
#include<cstdio>
#include<algorithm>
using namespace std;
FILE * fin = fopen("garaj.in","r");
FILE * fout = fopen("garaj.out","w");
long long n, m, p ,u,mid, x[100005],cars;
long long c[100005],t[100005];
int verif( long long T ){
long long sum = 0;
for( long long i = 1; i <= n; i++ ){
sum += ( T / (t[i] * 2) ) * c[i];
if( sum >= m )
return 1;
}
return 0;
}
int main(){
fscanf(fin,"%lld %lld",&n,&m);
for ( long long i = 1; i <= n; i++ ){
fscanf(fin,"%lld %lld",&c[i],&t[i]);
}
p = 1;
u = m * 1LL * 1000;
while( p <= u ){
mid = ( p + u ) / 2;
if( verif(mid) ){
u = mid -1;
}else{
p = mid + 1;
}
}
cars = 0;
for( long long i = 1; i <= n; i++ ){
x[i] = ( p / (t[i] * 2) ) * c[i];
}
sort( x + 1, x + n + 1 );
long long k = m;
for( long long i = n; i >= 1; i-- ){
cars++;
k -= x[i];
if( k <= 0){
break;
}
}
fprintf(fout,"%lld %lld",p,cars);
return 0;
}