Pagini recente » Cod sursa (job #3250202) | Cod sursa (job #2750300) | Cod sursa (job #1329116) | Cod sursa (job #2360330) | Cod sursa (job #3264175)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
const long long inf = 1e12 + 7;
long long n, m, i, j, drum[100002];
long long t[100002], c[100002];
static inline bool Verif(long long timp) {
long long sum = 0;
for(long long i = 1; i <= n; i++) sum += c[i] * (timp / (t[i] * 2));
return m <= sum;
}
int main() {
fin >> n >> m;
for(i = 1; i <= n; i++) fin >> c[i] >> t[i];
long long st = 1, dr = inf;
long long rasp = 0;
while(st <= dr) {
long long mij = st + (dr - st) / 2;
if(Verif(mij)) {
rasp = mij;
dr = mij - 1;
}
else st = mij + 1;
}
for(i = 1; i <= n; i++) drum[i] = c[i] * (rasp / (t[i] * 2));
sort(drum + 1, drum + n + 1, greater<long long>());
long long fr = 0;
long long sum = 0;
for(i = 1; i <= n && sum < m; i++) {
sum += drum[i];
fr++;
}
fout << rasp << " " << fr;
return 0;
}