Pagini recente » Cod sursa (job #1817771) | Cod sursa (job #1588502) | Cod sursa (job #227689) | Cod sursa (job #1478808) | Cod sursa (job #1526475)
#include<fstream>
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int n,m,k,i,j,p,x,y,t,sol,b[100009];
struct camion
{
int c,t;
};
camion a[100009];
int check(int time)
{
int sol=0;
for(i=1;i<=n;i++)
{
sol+=a[i].c*(time/a[i].t);
if(sol>=m) return 1;
}
return 0;
}
int binary_search()
{
int mij,st,dr;
sol=0;
st=1;
dr=2000000000;
while(st<=dr)
{
mij=(st+dr)/2;
if(check(mij) == 1)
{
sol=mij;
dr=mij-1;
}
else st=mij+1;
}
return sol;
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>a[i].c>>a[i].t;
a[i].t*=2;
}
t=binary_search();
for(i=1;i<=n;i++)
{
b[i]=(t/a[i].t)*a[i].c;
}
sort(b+1,b+n+1);
int cont=0;
for(i=n;i>=1 && m>0;i--)
{
m=m-b[i];
cont++;
}
fout<<t<<" "<<cont<<"\n";
}