Pagini recente » Cod sursa (job #2263895) | Cod sursa (job #119148) | Cod sursa (job #2325801) | Cod sursa (job #2923765) | Cod sursa (job #461535)
Cod sursa(job #461535)
#include <algorithm>
#include <functional>
using namespace std;
typedef long long ll;
typedef unsigned int ui;
const char FIN[] = "garaj.in", FOU[] = "garaj.out";
const int MAX_N = 100005;
struct vec
{
int C, T;
} ;
int N, M;
ui V[MAX_N];
vec X[MAX_N];
ll check (int timp)
{
ll sol = 0;
for (int i = 1; i <= N; ++i)
sol += ( V[i] = (ui) X[i].C * ( timp / X[i].T ) );
return sol;
}
void bin_ser ()
{
int i, step;
for (i = 0, step = 1 << 30 ; step ; step >>= 1)
if ( check ( i + step ) < M )
i += step;
printf ("%d ", ++i << 1);
check ( i );
}
void solve ()
{
int i;
for (i = 1; i <= N; ++i)
if ( ( M -= V[i] ) <= 0 ) break;
printf("%d\n", i );
}
int main()
{
freopen(FIN, "r", stdin);
freopen(FOU, "w", stdout);
scanf("%d %d", &N, &M);
for (int i = 1; i <= N; ++i)
scanf("%d %d", &X[i].C, &X[i].T);
bin_ser () ;
sort ( V + 1, V + N + 1, greater<ui> () );
solve () ;
return 0;
}