Pagini recente » Cod sursa (job #219245) | Cod sursa (job #1865571) | Cod sursa (job #852881) | Cod sursa (job #1338644) | Cod sursa (job #2719867)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
struct chestie{
int c, t;
}v[NMAX];
int vec[NMAX];
int main()
{
int n, m;
fin >> n >> m;
int valM = 0;
for(int i = 1; i <= n; ++i){
fin >> v[i].c >> v[i].t;
v[i].t *= 2;
valM = max(valM, m / v[i].c * v[i].t);
}
int st = 1;
int dr = valM;
int best = -1;
while(st <= dr){
int mij = (st + dr) / 2;
int sum = 0;
for(int i = 1; i <= n; ++i)
sum += (mij / v[i].t) * v[i].c;
if(sum >= m){
best = mij;
dr = mij - 1;
}
else st = mij + 1;
}
for(int i = 1; i <= n; ++i)
vec[i] = (best / v[i].t) * v[i].c;
sort(vec + 1, vec + n + 1);
int sum = 0, cnt = 0;
for(int i = n; i >= 1 && sum < m; --i){
sum += vec[i];
++cnt;
}
fout << best << ' ' << cnt << '\n';
return 0;
}