Pagini recente » Cod sursa (job #862571) | Cod sursa (job #71378) | Cod sursa (job #1567983) | Cod sursa (job #2951885) | Cod sursa (job #470541)
Cod sursa(job #470541)
#include <fstream>
using namespace std;
struct camion{short int c,t;} v[1<<17];
int n,m,x;
ifstream in("garaj.in");
ofstream out("garaj.out");
bool ok(long long x)
{
long long c=0;
for (int i=1;i<=n;i++)
{
c+=v[i].c*(x/v[i].t);
if (c>=m)
return true;
}
return false;
}
int bsearch()
{
long long i,step=(long long)1<<40;
for (i=0;step;step>>=1)
if (!ok(i+step))
i+=step;
return i+1;
}
bool cmp(camion a,camion b)
{
return a.c*(x/a.t)>b.c*(x/b.t);
}
int main()
{
int i,s=0;
in>>n>>m;
for (i=1;i<=n;i++)
{
in>>v[i].c>>v[i].t;
v[i].t<<=1;
}
x=bsearch();
sort(v+1,v+n+1,cmp);
for (i=1;i<=n;i++)
{
s+=v[i].c*(x/v[i].t);
if (s>=m)
break;
}
out<<x<<" "<<i<<"\n";
return 0;
}