Pagini recente » Cod sursa (job #1319858) | Cod sursa (job #1996996) | Cod sursa (job #2657844) | Cod sursa (job #868821) | Cod sursa (job #3226035)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("garaj.in");
ofstream fout ("garaj.out");
struct camion
{
long long t,c;
};
camion v[100001];
long long timp,st,dr,mij,m,cant[100001];
int n,i;
bool f (long long timp)
{
long long sum=0;
for (int i=1; i<=n; i++)
sum+=v[i].c*(timp/v[i].t);
return sum>=m;
}
int main()
{
fin>>n>>m;
for (i=1; i<=n; i++)
{
fin>>v[i].c>>v[i].t;
v[i].t*=2;
}
st=1;
dr=2e12;
while (st<=dr)
{
mij=(st+dr)/2;
if (f (mij))
dr=mij-1;
else
st=mij+1;
}
timp=st;
for (i=1; i<=n; i++)
cant[i]=v[i].c*(timp/v[i].t);
sort (cant+1,cant+n+1);
reverse (cant+1,cant+n+1);
for (i=1; i<=n&&m>0; i++)
m-=cant[i];
fout<<timp<<" "<<i-1;
return 0;
}