Pagini recente » Istoria paginii utilizator/westlifegirl13 | Cod sursa (job #2407542) | Cod sursa (job #772812) | Cod sursa (job #441334) | Cod sursa (job #1490412)
#include <fstream>
#include <cstring>
#include <algorithm>
#include <string>
#define ll int
#define maxN 100002
using namespace std;
int n, sol, x;
ll m;
struct elem
{
ll c;
ll t;
}v[maxN];
string buffer;
string::iterator buffer_it;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int cmp(const elem a, const elem b)
{
return a.c * ((x * 1LL) / a.t) > b.c * ((x * 1LL) / b.t);
}
void r(ll &x)
{
for ( ; *buffer_it>'9' || *buffer_it<'0'; ++buffer_it ) ;
for ( x= 0; *buffer_it<='9' && *buffer_it>='0'; ++buffer_it ) {
x= x*10+*buffer_it-'0';
}
}
void read()
{
int i;
getline( fin, buffer, (char)0 ) ;
buffer_it= buffer.begin();
r(n); r(m);
for (i = 1; i <= n; ++ i)
r(v[i].c), r(v[i].t),
v[i].t *= 2;
}
int ok(ll x)
{
int i;
ll sum = 0LL;
for (i = 1; i <= n; ++ i)
{
sum += v[i].c * ((x * 1LL) / v[i].t);
if (sum >= m)
break;
}
return sum >= m;
}
int bs()
{
ll p = 1 << 30, i = p;
while (p)
{
if (i - p >= 0 && ok(i - p))
i -= p;
p /= 2;
}
return i;
}
void write()
{
int sum = 0, i;
x = bs();
fout<< x <<" ";
sort(v + 1, v + n + 1, cmp);
for (i = 1; i <= n; ++ i)
{
sum += v[i].c * ((x * 1LL) / v[i].t);
++ sol;
if (sum >= m)
break;
}
fout << sol;
}
int main()
{
read();
write();
return 0;
}