Pagini recente » Cod sursa (job #2693104) | Cod sursa (job #2303843) | Cod sursa (job #36064) | Cod sursa (job #2752849) | Cod sursa (job #137431)
Cod sursa(job #137431)
#include<stdio.h>
#include<algorithm>
#define NMAX 101
using namespace std;
long a,x[NMAX],y[NMAX],n,k,i,in,sf,q,m;
struct kkt
{
long X,Y;
};
kkt qq[NMAX];
int cmpf(const kkt a,const kkt b)
{
return ((a.X/a.Y)>(b.X/b.Y));
}
int main()
{
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
scanf("%ld%ld",&n,&k);
for (i=1;i<=n;i++)
{
scanf("%ld%ld",&x[i],&y[i]);
y[i]=y[i]*2;
qq[i].X=x[i];
qq[i].Y=y[i];
}
in=1;
sf=k;
y[n+1]=m+1;
x[n+1]=0;
while (in<sf)
{
m=(in+sf)/2;
q=0;
for (i=1;i<=n+1&&q<k;i++)
q+=(m/y[i])*x[i];
if (i<=n+1)
sf=m;
else
in=m+1;
}
if (in==sf) m=in;
printf("%ld ",m);
a=1;
/* while (a)
{
a=0;
for (i=1;i<n;i++)
if (((float)x[i]/y[i])<((float)x[i+1]/y[i+1]))
{
a=x[i];
x[i]=x[i+1];
x[i+1]=a;
a=y[i];
y[i]=y[i+1];
y[i+1]=a;
a=1;
}
} */
a=0;
sort(qq+1,qq+n+1,cmpf);
for (i=1;i<=n;i++)
{
x[i]=qq[i].X;
y[i]=qq[i].Y;
}
q=0;
for (i=1;i<=n;i++)
{
q+=(m/y[i])*x[i];
if (q>=k)
{
a=i;
i=n;
}
}
printf("%ld\n",a);
return 0;
}