Pagini recente » Cod sursa (job #2457801) | Cod sursa (job #1041165) | Cod sursa (job #2049282) | Cod sursa (job #405415) | Cod sursa (job #139184)
Cod sursa(job #139184)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define ll long long
#define NMax 100005
int N, M, C[NMax], T[NMax], bst;
int main(void)
{
int i, l, r, m;
ll trans;
freopen("garaj.in", "r", stdin);
freopen("garaj.out", "w", stdout);
scanf("%d %d", &N, &M);
for (i = 1; i <= N; i++)
{
scanf("%d %d", &C[i], &T[i]);
T[i] <<= 1;
}
l = 1; r = 2000000001;
for (; l <= r; )
{
m = (l + r) / 2;
for (i = 1, trans = 0; i <= N && trans < M; i++)
trans += (ll)C[i] * (m / T[i]);
if (trans >= M)
r = m-1, bst = m;
else
l = m+1;
}
for (i = 1; i <= N; i++)
C[i] *= (bst / T[i]);
sort(C+1, C+N+1);
for (i = N, trans = 0; trans < M; --i)
trans += C[i];
printf("%d %d\n", bst, N-i);
return 0;
}