Pagini recente » Cod sursa (job #828686) | Cod sursa (job #700075) | Cod sursa (job #672415) | Cod sursa (job #964052) | Cod sursa (job #2225685)
#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, k, 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)/2;
for(i=1; i<=n && sum<m; i++)
sum = sum + v[i].c*(mid/v[i].t);
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;
for(i=1; i<=n && sum<m; i++)
sum += v[i].t;
fout << st << " " << i - 1;
return 0;
}