Pagini recente » Cod sursa (job #1833927) | Cod sursa (job #301583) | Cod sursa (job #1458208) | Cod sursa (job #2847123) | Cod sursa (job #1113783)
#include <fstream>
#include <algorithm>
using namespace std;
int n,m,i,st,dr,mid,nmin;
int t[100005],v[100005],c[100005];
bool verif(int tmp) {
int x=m;
for(int i=1;i<=n;i++) {
x-=tmp/(2*t[i])*c[i];
if(x<=0){
return 1;
}
}
return 0;
}
int main() {
ifstream f("garaj.in");
ofstream g("garaj.out");
f>>n>>m;
for(i=1;i<=n;i++)
f>>c[i]>>t[i];
st=1;dr=2*m;
while(st<=dr) {
mid=st+(dr-st)/2;
if( verif(mid) )
dr=mid-1;
else
st=mid+1;
}
for(i=1;i<=n;i++) {
v[i]=st/(2*t[i])*c[i];
}
sort(v+1,v+n+1);
for(i=n;i>=0;i--) {
m-=v[i];
if(m<=0) {
nmin=n-i+1;
break;
}
}
g<<st<<" "<<nmin<<"\n";
return 0;
}