Pagini recente » Cod sursa (job #13592) | Cod sursa (job #639753) | Cod sursa (job #366527) | Cod sursa (job #1966226) | Cod sursa (job #2291401)
#include <cstdio>
#include <algorithm>
FILE *fin = freopen("garaj.in","r",stdin);
FILE *fout = freopen("garaj.out","w",stdout);
static const int NMAX = 1e5;
int n, sticle, logN;
struct tir{
int capacitate, timp, coef;
} v[NMAX];
bool cmp(const tir &tir1, const tir &tir2)
{
return tir1.coef < tir2.coef;
}
bool Check(int x)
{
long long int s = 0;
for(int i =1; i<= n; ++i)
{
s+= v[i].capacitate*(x/v[i].timp);
}
if(s < sticle)
return true;
return false;
}
int main()
{
scanf("%d%d",&n,&sticle);
for(int i= 1; i<=n; ++i)
{
scanf("%d%d",&v[i].capacitate,&v[i].timp);
v[i].timp*=2;
}
logN = 1 << 30;
int k = 0;
for(int pas = logN; pas; pas >>=1)
{
if(Check(k+pas))
k+=pas;
}
printf("%d ",k+1);
int t = k+1;
for(int i =1; i<= n; ++i)
v[i].coef = (t / v[i].timp) * v[i].capacitate;
std::sort(v+1,v+n+1,cmp);
int ct = 0;
while(sticle>0 && n >= 1)
{
if(v[n].timp <= t)
sticle-=v[n].coef;
ct++;
n--;
}
printf("%d",ct);
return 0;
}