Pagini recente » Monitorul de evaluare | Cod sursa (job #641196) | Cod sursa (job #844543) | Cod sursa (job #1534477) | Cod sursa (job #1116475)
#include <fstream>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int c[100001],t[100001];
int many[100001],keep[100001];
int n,m;
bool check (int val)
{
int s = 0;
for (int i=1; i<=n; ++i)
{
many[i] = val/(2*t[i])*c[i];
s += many[i];
}
if (s >= m)
{
memcpy (keep,many,sizeof(many));
return 1;
}
return 0;
}
int main()
{
fin>>n>>m;
for (int i=1; i<=n; ++i)
{
fin>>c[i]>>t[i];
}
int lo = 0, hi = 2000000001;
while (hi - lo > 1)
{
int mid = (lo + hi)/2;
if (check (mid))
hi = mid;
else lo = mid;
}
fout<<hi<<" ";
sort (keep+1,keep+n+1);
int s=0;
int i = n;
for (; s < m; --i)
s += keep[i];
fout<<n-i;
}