Pagini recente » Cod sursa (job #1809590) | Cod sursa (job #556462) | Cod sursa (job #823100) | Cod sursa (job #3158659) | Cod sursa (job #1014346)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n,tot,c[100005],t[100005],take[100005],mtime;
int Ok(int time)
{ int i,res=0;
for(i=1;i<=n;i++)
res+=(time/t[i])*c[i];
return res>tot;
}
void Search()
{ int l=1,r=1000005,m;
while(l<r)
{ m=(l+r)/2;
if (Ok(m)) r=m; else l=m+1;
}
mtime=l;
}
void Rebuild()
{ int i,res,sol;
for(i=1;i<=n;i++)
take[i]=(mtime/t[i])*c[i];
sort(take+1,take+n+1);
i=n; sol=0;
while(tot>0)
{ tot-=take[i];
i--; sol++;
}
g<<sol;
}
int main()
{ int i;
f>>n>>tot;
for(i=1;i<=n;i++)
{f>>c[i]>>t[i];
t[i]*=2;}
Search();
g<<mtime<<" ";
Rebuild();
return 0;
}