Pagini recente » Cod sursa (job #2062043) | Cod sursa (job #3137872) | Cod sursa (job #1978772) | Cod sursa (job #3276002) | Cod sursa (job #135634)
Cod sursa(job #135634)
Utilizator |
Mircea Pasoi domino |
Data |
14 februarie 2008 01:15:00 |
Problema |
Garaj |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
0.84 kb |
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAX_N 100005
#define FIN "garaj.in"
#define FOUT "garaj.out"
#define ll long long
int N, M, C[MAX_N], T[MAX_N];
ll V[MAX_N];
ll solve(int time)
{
int i; ll ret = 0;
for (i = 0; i < N; ++i)
{
V[i] = C[i]*(time/T[i]);
ret += V[i];
}
return ret;
}
int main(void)
{
int i, inc;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d %d", &N, &M);
for (i = 0; i < N; ++i)
scanf("%d %d", C+i, T+i);
for (i = 0, inc = 1<<30; inc; inc >>= 1)
if (solve(i+inc) < M) i += inc;
printf("%d ", 2*(++i));
solve(i);
sort(V, V+N);
reverse(V, V+N);
for (i = 0; i < N; ++i)
if ((M -= V[i]) <= 0) break;
printf("%d\n", i+1);
return 0;
}