Pagini recente » Cod sursa (job #2979726) | Cod sursa (job #63597) | Cod sursa (job #1064292) | Cod sursa (job #2397478) | Cod sursa (job #2656033)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream si("garaj.in");
ofstream so("garaj.out");
short 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, ans=dr;
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;
ans=min(mij, ans);
}
else
st=mij+1;
}
for(int i=1; i<=n; ++i)
t[i]=(ans/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<<ans<<' '<<rasp;
return 0;
}