Pagini recente » Cod sursa (job #2675055) | Cod sursa (job #576295) | Cod sursa (job #2865901) | Cod sursa (job #2589977) | Cod sursa (job #2656029)
#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, m;
si>>n>>m;
for(int i=1; i<=n; ++i) {
si>>c[i]>>t[i];
t[i]*=2;
}
int sum, ans=2000000000;
int st=1, dr=2000000000;
while(st<=dr) {
int 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;
}