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