Pagini recente » Cod sursa (job #1916199) | Cod sursa (job #372475) | Cod sursa (job #1478006) | Cod sursa (job #1049910) | Cod sursa (job #1116535)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n,m,tmin;
struct camion{
int t,c;
} v[100001];
int cmp(camion a,camion b){
return (a.c<b.c?0:1);
}
bool ver(int T){
long long tr=0;
for(register int i=1;i<=n;i++){
tr+=(T/(2*v[i].t))*v[i].c;
}
return (tr>m?true:false);
}
int caut_bin(int p,int u){
int mid,sol;
while(p<=u){
mid=p+(u-p)/2;
if(ver(mid)){
u=mid-1;
sol=mid;
}
else{
p=mid+1;
}
}
return sol;
}
int main(void){
register int i,j;
f>>n>>m;
for(i=1;i<=n;i++)
f>>v[i].c>>v[i].t;
tmin=caut_bin(1,m);
g<<tmin<<" ";
int maxim=0;
for(i=1;i<=n;i++)
v[i].c*=(tmin/(2*v[i].t));
sort(v+1,v+n+1,cmp);
int sum=0;
for(i=1;i<=n;i++){
sum+=v[i].c;
if(sum>=m)
break;
}
g<<i;
f.close();
g.close();
return 0;
}