Pagini recente » Cod sursa (job #1390459) | Cod sursa (job #22226) | Cod sursa (job #6549) | Cod sursa (job #2969052) | Cod sursa (job #1877143)
#include <iostream>
#include <fstream>
#include <math.h>
#include <algorithm>
#define tmax 1000000000000
#define Nmax 100005
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n,c[Nmax],t[Nmax],m,timp;
void read()
{
f>>n>>m;
for(int i=1;i<=n;i++)
f>>c[i]>>t[i];
}
bool verif(long long x)
{
long long sol=0;
for(int i=1;i<=n&&sol<m;i++)
sol+=c[i]*(x/t[i]);
if(sol>=m)return true;
return false;
}
void bs()
{
long long i,j,mid;
i=1; j=tmax;
while(i<=j)
{
mid=(i+j)/2;
if(verif(mid)==true)
j=mid-1;
else
i=mid+1;
}
g<<i*2<<" "; timp=i;
}
void solve()
{
int a[Nmax],sum,i;
for(i=1;i<=n;i++)a[i]=c[i]*(timp/t[i]);
sort(a+1,a+n+1);
for(i=n;i>=1&&sum<m;i--)sum+=a[i];
g<<n-i;
}
int main()
{
read();
bs();
solve();
return 0;
}