Pagini recente » Cod sursa (job #547932) | Cod sursa (job #432761) | Cod sursa (job #2483570) | Cod sursa (job #132094) | Cod sursa (job #137412)
Cod sursa(job #137412)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define MAXN 100005
int N, K;
int c[MAXN], t[MAXN];
vector<long long> v;
inline int cmp( long long a, long long b )
{
return a > b;
}
inline int isOk( long long time, int solve )
{
long long can = 0;
for (int i = 0; i < N; i++)
{
long long curCan = (time / t[i]) * c[i];
can += curCan;
if (!solve)
if (can >= K)
return 1;
else;
else
v.push_back(curCan);
}
if (solve)
{
sort( v.begin(), v.end(), cmp );
can = 0;
for (int i = 0; i < N; i++)
{
can += v[i];
if (can >= K)
return i + 1;
}
}
return 0;
}
int main()
{
freopen("garaj.in", "rt", stdin);
freopen("garaj.out", "wt", stdout);
scanf("%d %d", &N, &K);
for (int i = 0; i < N; i++)
scanf("%d %d", c + i, t + i),
t[i] *= 2;
long long rez = 0, step = 1LL << 60;
for (; step; step >>= 1)
if (!isOk(rez + step, 0))
rez += step;
rez++;
printf("%lld %d\n", rez, isOk(rez, 1));
return 0;
}