Pagini recente » Cod sursa (job #1194857) | Cod sursa (job #1773529) | Cod sursa (job #1775360) | Cod sursa (job #2822448) | Cod sursa (job #2149269)
#include <fstream>
#include <algorithm>
using namespace std;
long long n,m,i,st,dr,mid,s;
pair <int,int> v[100001];
int w[100001];
int verif (long long timp){
long long s = 0;
for (int i=1;i<=n;i++){
s += timp/(2*v[i].second) * v[i].first;
if (s > m)
return 0;
}
return 1;
}
int main (){
ifstream fin ("garaj.in");
ofstream fout ("garaj.out");
fin>>n>>m;
for (i=1;i<=n;i++)
fin>>v[i].first>>v[i].second;
///capacitate timp
/// cautam binar timpul maxim in care circula un camion
st = 1;
dr = 1000000000000000LL;
while (st <= dr){
mid = (st+dr)/2;
if (verif (mid))
st = mid+1;
else
dr = mid-1;
}
/// st - timpul optim
fout<<st<<" ";
for (i=1;i<=n;i++)
w[i] = st/(v[i].second*2) * v[i].first;
sort (w+1,w+n+1);
s = 0;
for (i=n;i>=1;i--){
s += w[i];
if (s >= m){
fout<<n-i+1;
break;
}
}
return 0;
}