Pagini recente » Cod sursa (job #2668533) | Cod sursa (job #1717058) | Cod sursa (job #549330) | Cod sursa (job #2503747) | Cod sursa (job #1393372)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("garaj.in");
ofstream fout ("garaj.out");
typedef struct { int c, t; } art;
unsigned int N, M, S[100010];
art V[100010];
unsigned int Verif(unsigned int timp)
{
unsigned int v = 0;
for (int i = 1; i <= N; i++) {
v += timp / V[i].t * V[i].c;
}
return v;
}
int main()
{
fin >> N >> M;
for (int i = 1; i <= N; i++)
{
fin >> V[i].c >> V[i].t;
V[i].t *= 2;
}
unsigned int st = 1, dr = (1 << 31), mij, cmin, tmin;
while (st <= dr)
{
mij = (st + dr) / 2;
cmin = Verif(mij);
if (cmin < M) st = mij + 1;
else if (cmin > M) dr = mij - 1, tmin = mij;
else tmin = mij, st = dr + 1;
}
fout << tmin << ' ';
for (int i = 1; i <= N; i++) {
S[i] = tmin / V[i].t * V[i].c;
}
sort (S + 1, S + 1 + N);
int val = 0;
for (int i = N; i >= 1; i--)
{
val += S[i];
if (val >= M)
{
fout << N - i + 1 << '\n';
break;
}
}
fout.close();
return 0;
}