Pagini recente » Cod sursa (job #1421722) | Cod sursa (job #1438610) | Cod sursa (job #1786116) | Cod sursa (job #419581) | Cod sursa (job #3138011)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("garaj.in");
ofstream out("garaj.out");
long long n, m;
long long tmin;
struct camion
{
long long c, t;
}v[100002];
long long SticleDuse(long long t)//cate sticle se transporta intr-un timp t
{
long long r=0;
for(int i=1; i<=n; i++)
{
r+=(t/v[i].t)/2*v[i].c;
if(r>=m)
break;
}
return r;
}
bool cmp(camion a, camion b)
{
if((tmin/a.t)/2*a.c<(tmin/b.t)/2*b.c)
{
return 0;
}
return 1;
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; i++)
{
in>>v[i].c>>v[i].t;
}
long long st=0, dr=v[1].t*m, mijl, s;
while(st<dr)
{
mijl=(st+dr)/2;
s=SticleDuse(mijl);
if(s<m)
{
st=mijl+1;
}
else
{
dr=mijl;
}
}
tmin=st;
out<<tmin<<" ";
sort(v+1, v+n+1, cmp);
int nrmin=0;
for(int i=1; i<=n; i++)
{
m-=(tmin/v[i].t)/2*v[i].c;
nrmin++;
if(m<=0)
break;
}
out<<nrmin;
}