Pagini recente » Cod sursa (job #2099100) | Cod sursa (job #1298534) | Rating Florescu Eduard (fl_edw) | Cod sursa (job #2348829) | Cod sursa (job #3255770)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
struct nr
{
long long p;
long long max;
long long timp;
};
nr v[100005];
bool cmp(nr a, nr b)
{
return a.p>b.p;
}
int main()
{
long long n, m;
fin >> n >> m;
for(long long i=1; i<=n; i++)
{
fin >> v[i].max >> v[i].timp;
v[i].timp*=2;
}
long long st=0, dr=100000000001, mid;
while(st<dr-1)
{
mid=(st+dr)/2;
long long nrs=0;
for(long long i=1; i<=n; i++)
{
long long x=mid/v[i].timp;
nrs+=x*v[i].max;
}
if(nrs>=m)
dr=mid;
else
st=mid;
}
fout << dr;
for(long long i=1; i<=n; i++)
{
v[i].p=(dr/v[i].timp)*v[i].max;
}
sort(v+1, v+n+1, cmp);
long long tmp=0;
for(long long i=1; i<=n; i++)
{
if(tmp<=m&&v[i].p)
tmp+=v[i].p;
else
{
fout << " " << i-1;
return 0;
}
}
fout << " " << n;
return 0;
}