Pagini recente » Cod sursa (job #884386) | Cod sursa (job #2456133) | Cod sursa (job #1914881) | Cod sursa (job #561550) | Cod sursa (job #2136021)
#include<cstdio>
#include<algorithm>
using namespace std;
FILE * fin = fopen("garaj.in","r");
FILE * fout = fopen("garaj.out","w");
int n, m, p,u, mid, x[100005], cars;
int c[100005], t[100005];
int verif( int T ){
int sum = 0;
for( int i = 1; i <= n; i++ ){
sum += ( T / (t[i] * 2) ) * c[i];
if( sum >= m )
return 1;
}
return 0;
}
int main(){
fscanf(fin,"%d %d",&n,&m);
for ( int i = 1; i <= n; i++ ){
fscanf(fin,"%d %d",&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( int i = 1; i <= n; i++ ){
x[i] = ( p / (t[i] * 2) ) * c[i];
}
sort( x + 1, x + n + 1 );
int k = m;
for( int i = n; i >= 1; i-- ){
cars++;
k -= x[i];
if( k <= 0){
break;
}
}
fprintf(fout,"%d %d",p,cars);
return 0;
}