Pagini recente » Cod sursa (job #2653881) | Cod sursa (job #2126862) | Cod sursa (job #2728410) | Cod sursa (job #2864599) | Cod sursa (job #2656035)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream si("garaj.in");
ofstream so("garaj.out");
int c[100005], t[100005];
int main() {
int n;
long long m;
si>>n>>m;
long long st=1, dr=0;
for(int i=1; i<=n; ++i) {
si>>c[i]>>t[i];
t[i]*=2;
dr=max(dr, m/c[i]*t[i]);
}
long long sum;
while(st<=dr) {
long long mij=(st+dr)>>1;
sum=0;
for(int i=1; i<=n&& sum<m; ++i)
sum+=(mij/t[i])*c[i];
if(sum>=m)
dr=mij-1;
else
st=mij+1;
}
for(int i=1; i<=n; ++i)
t[i]=(st/t[i])*c[i];
sort(t+1, t+n+1);
int rasp;
sum=0;
for(rasp=0; rasp<n&&sum<m; ++rasp)
sum+=t[n-rasp];
so<<st<<' '<<rasp;
return 0;
}