Pagini recente » Cod sursa (job #1584146) | Cod sursa (job #1174812) | Cod sursa (job #236691) | Cod sursa (job #1196607) | Cod sursa (job #977131)
Cod sursa(job #977131)
#include<stdio.h>
#include<algorithm>
#include<functional>
using namespace std;
int tmin,sticle,n;
struct CAMION {
int c,t;
};
CAMION c[100010];
int cate[100010];
bool ok (int timp) {
int count=0,i;
for(i=1;i<=n;i++)
count=count+timp/c[i].t*c[i].c;
if(count>=sticle)
return 1;
return 0;
}
int bs (int left, int right) {
int mid,res;
while(left<=right) {
mid=left+(right-left)/2;
if(ok(mid)) {
right=mid-1;
res=mid;
}
else
left=mid+1;
}
return res;
}
int solve (int t) {
int i,count=0;
for(i=1;i<=n;i++) {
count=count+cate[i];
if(count>=sticle)
return i;
}
}
int main() {
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
int i;
scanf("%d%d",&n,&sticle);
for(i=1;i<=n;i++) {
scanf("%d%d",&c[i].c,&c[i].t);
c[i].t<<=1;
}
tmin=bs(1,500000);
for(i=1;i<=n;i++)
cate[i]=tmin/c[i].t*c[i].c;
sort(cate+1,cate+1+n,greater <int> ());
printf("%d %d\n",tmin,solve(tmin));
return 0;
}