Pagini recente » Cod sursa (job #2557871) | Cod sursa (job #2549887) | Cod sursa (job #1564985) | Cod sursa (job #984624) | Cod sursa (job #982722)
Cod sursa(job #982722)
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
struct CAMION
{
long long t,c;
inline bool operator<(const CAMION &other) const
{
return c>other.c;
}
} a[100005];
long long n,nr;
long long C[100005];
bool ok(long long timp)
{
long long sol=0;
for(long long i=1;i<=n;i++)
sol+=timp/(2*a[i].t)*a[i].c;
return sol>=nr;
}
int main()
{
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
scanf("%lld%lld",&n,&nr);
for(long long i=1;i<=n;i++)
scanf("%lld%lld",&a[i].c,&a[i].t);
long long ans=2000000000;
for(long long pas=1<<30;pas;pas>>=1)
if(ans-pas>=0 && ok(ans-pas))
ans-=pas;
for(long long i=1;i<=n;i++)
C[i]=(ans/(2LL*a[i].t))*a[i].c;
sort(C+1,C+n+1,greater<long long>());
long long i,sol=0;
for(i=1;sol<nr;i++)
sol+=C[i];
printf("%lld %lld\n",ans,i-1);
return 0;
}