Pagini recente » Cod sursa (job #672520) | Cod sursa (job #2726552) | Cod sursa (job #2903741) | Cod sursa (job #1592269) | Cod sursa (job #940814)
Cod sursa(job #940814)
#include<stdio.h>
#include<algorithm>
#define maxdim 100005
using namespace std;
FILE*f=fopen("garaj.in","r");
FILE*g=fopen("garaj.out","w");
int n,m;
int c[maxdim];
pair<int,int>C[maxdim];
inline bool check ( const int &tmax ){
int r = m;
for ( int i = 1 ; i <= n ; ++i ){
r -= (tmax/(C[i].second<<1))*C[i].first;
if ( r <= 0 ) return 1;
}
return 0;
}
int main () {
fscanf(f,"%d %d",&n,&m);
for ( int i = 1 ; i <= n ; ++i ){
fscanf(f,"%d %d",&C[i].first,&C[i].second);
}
int left = 1 , middle , right = 2*m;
while ( left <= right ){
middle = left + (right-left)/2;
if ( check(middle) ){
right = middle-1;
}
else{
left = middle+1;
}
}
int tmin = left;
for ( int i = 1 ; i <= n ; ++i ){
c[i] = (tmin/(C[i].second<<1))*C[i].first;
}
sort(c+1,c+n+1);
int nrc = 0;
for ( int i = n ; i >= 1 ; --i ){
m -= c[i];
++nrc;
if ( m <= 0 ) break ;
}
fprintf(g,"%d %d\n",tmin,nrc);
fclose(f);
fclose(g);
return 0;
}