Pagini recente » Cod sursa (job #1129089) | Cod sursa (job #195485) | Cod sursa (job #2879409) | Cod sursa (job #2190269) | Cod sursa (job #1113711)
#include<cstdio>
#include<algorithm>
using namespace std;
struct cam{
int c;
int t;
}v[101000];
int n,m,i,j,t[101000],ok,nr,nmin,mid,p,u;
FILE *f,*g;
/*int cmp(cam a,cam b){
return a.c/a.t>b.c/b.t;
}
*/
int verif(int t){
int i,c,x=m;
for(i=1;i<=n;i++){
x-=t/(v[i].t*2)*v[i].c;
if(x<=0){
return 1;
}
}
return 0;
}
int main(){
f=fopen("garaj.in","r");
g=fopen("garaj.out","w");
fscanf(f,"%d%d\n",&n,&m);
for(i=1;i<=n;i++){
fscanf(f,"%d%d",&v[i].c,&v[i].t);
}
//sort(v+1,v+n+1,cmp);
p=1;
u=2*m;
while(p<=u){
mid=p+(-p+u)/2;
ok=verif(mid);
if(ok==1){
u=mid-1;
}
else
p=mid+1;
}
for(i=1;i<=n;i++){
t[i]=p/(v[i].t*2)*v[i].c;
}
sort(t+1,t+n+1);
for(i=n;i>=0;i--){
m-=t[i];
if(m<=0){
nmin=n-i+1;
break;
}
}
fprintf(g,"%d %d",p,nmin);
fclose(f);
fclose(g);
return 0;
}