Pagini recente » Cod sursa (job #624839) | Cod sursa (job #1045885) | Cod sursa (job #812701) | Cod sursa (job #2723060) | Cod sursa (job #3138221)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("garaj.in");
ofstream out("garaj.out");
long long n, m;
long long tmin, v2[100001];
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)*v[i].c;
if(r>=m)
break;
}
return r;
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; i++)
{
in>>v[i].c>>v[i].t;
v[i].t *= 2;
}
long long st=0, dr=m * 1000LL, 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<<" ";
for(int i=1; i<=n; i++)
v2[i]=tmin/v[i].t*v[i].c;
sort(v2+1, v2+n+1);
reverse(v2+1, v2+n+1);
int nrmin=0;
for(int i=1; i<=n; i++)
{
m-=v2[i];
nrmin++;
if(m<=0)
break;
}
out<<nrmin;
}