Pagini recente » Cod sursa (job #1639301) | Cod sursa (job #1556115) | Cod sursa (job #138114) | Cod sursa (job #281814) | Cod sursa (job #2225686)
#include <fstream>
#include <algorithm>
#include <limits.h>
using namespace std;
ifstream fin ("garaj.in");
ofstream fout ("garaj.out");
int n, m, i, st, dr, sum, tmin, mid;
struct camion{
int c, t;
}v[100005];
bool cmp (camion a, camion b){
return a.t > b.t;
}
int main()
{
fin >> n >> m;
for (i=1; i<=n; i++){
fin >> v[i].c >> v[i].t;
v[i].t *= 2;
}
st = 2;
dr = INT_MAX;
while (st <= dr){
sum = 0;
mid = st + (dr - st)/2;
i = 1;
while(i<=n && sum<m){
sum += v[i].c*(mid/v[i].t);
i++;
}
if (sum >= m){
dr = mid - 1;
}
else{
st = mid + 1;
}
}
for(i=1; i<=n; i++)
v[i].t = v[i].c*(st/v[i].t);
sort(v + 1, v + n + 1, cmp);
sum = 0;
tmin = 1;
while (tmin <= n && sum < m){
sum += v[tmin].t;
tmin++;
}
fout << st << " " << tmin - 1;
return 0;
}