Pagini recente » Cod sursa (job #197932) | Cod sursa (job #2451733) | Cod sursa (job #1687978) | Cod sursa (job #638761) | Cod sursa (job #1374925)
#include <fstream>
#include <algorithm>
#define NMax 100010
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n, m, cmin, nrc, tcam[NMax], st, dr, mid, tmin;
struct camion
{
int c;
int t;
}c[NMax];
bool test_time(int time)
{
int nsticle = 0;
int var = m;
for (int i = 1; i <= n; i++) {
var -= time / c[i].t * c[i].c;
if (var <= 0)
return true;
}
return false;
}
int main()
{
f >> n >> m;
for (int i = 1; i <= n; i++) {
int tmp;
f >> c[i].c >> tmp;
c[i].t = 2 * tmp;
}
st = 1;
dr = 2000000000;
while (st <= dr) {
mid = (st + dr) / 2;
bool test = test_time(mid);
if (test) {
tmin = mid;
dr = mid - 1;
}
else
st = mid + 1;
}
g << tmin << " ";
for (int i = 1; i <= n; i++)
tcam[i] = tmin * c[i].c / c[i].t;
sort(tcam + 1, tcam + n + 1);
for (int i = n; i >= 1 && m > 0; i--, nrc++)
m -= tcam[i];
g << nrc;
}