Pagini recente » Cod sursa (job #2168192) | tema | Rating Dinu Vlad (Vladtz7) | Istoria paginii runda/minune2/clasament | Cod sursa (job #987252)
Cod sursa(job #987252)
#include<fstream>
#include<algorithm>
using namespace std;
int n,m,C[100100],T[100100],ord[100100];
long long solC,solT,nr[100100];
inline bool Posibil(long long t)
{
int i;
long long aux=1LL*m;
for(i=1;i<=n && aux>0LL;i++)
aux-=1LL*C[i]*(t/(2LL*T[i]));
if(aux>0LL)
return false;
return true;
}
inline void CautareBinara()
{
long long st,dr,mij;
st=0LL;
dr=solT=2000LL*m;
while(st<=dr)
{
mij=(st+dr)/2LL;
if(Posibil(mij))
{
solT=mij;
dr=mij-1LL;
}
else
st=mij+1LL;
}
}
inline bool Sortare(int a,int b)
{
return nr[a]>nr[b];
}
int main()
{
int i;
ifstream fin("garaj.in");
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>C[i]>>T[i];
ord[i]=i;
}
fin.close();
CautareBinara();
for(i=1;i<=n;i++)
nr[i]=1LL*C[i]*(solT/(2LL*T[i]));
sort(ord+1,ord+n+1,Sortare);
long long aux=1LL*m;
for(i=1;i<=n && aux>0LL;i++)
aux-=nr[ord[i]];
solC=i-1;
ofstream fout("garaj.out");
fout<<solT<<' '<<solC<<"\n";
fout.close();
return 0;
}